— boreal-kiss.com

[FlashPlayer10]A minimal template for using Pixel Bender Filters

フィルターデータはAdobe – Pixel Bender Filtersを利用(Crystallize.pbj)。ギャラリーには他にも面白そうなものがいくつかあったので遊べそう。ところでadobeで配布されている個人制作フィルターなんだけど、何でフィルタープロパティに関して説明がないんだろう。今回はフィルターデータの内部をfor文で走査してプロパティを見つけた。他に便利な方法がないようであれば次回にでも書きます。あと、よく見たらビキニじゃなかった。

The Back Button » Working with Shaders/Filters in Flash 10
The Flash Blog » Loading Pixel Bender Filters in Flash 10
AIF Toolkitメモ

[FlashPlayer10]Bikini de Mosaic
[FlashPlayer10]Bikini de Mosaic (要Flash Plaeyer 10)

ソース。たぶんPixel Bender Filterを利用するのに必要な最小限の内容しかないのでテンプレートみたいに使えると思う(もちろんフィルターのプロパティは変わる)。スライダーに関しては本質的ではないので割愛してます。

package {
    * Requires Flex SDK 3.0.1 or later to be compiled.
    import flash.display.Bitmap;
    import flash.display.Shader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filters.ShaderFilter;

    public class PixelBender03 extends Sprite{
        private var TestImage:Class;
        //Set mime-type as "binary", 
        //because the pbj object is in the binary form.
        private var PbjObject:Class;
        private var img:Bitmap;
        private var shader:Shader;
        private var filter:ShaderFilter;
        private var slider:SimpleSlider;
        public function PixelBender03(){
            img = new TestImage();
            img.x = stage.stageWidth/2 - img.width/2;
            img.y = stage.stageHeight/2 - img.height/2;
            //Pixel Bender filter
            shader = new Shader(new PbjObject());
            filter= new ShaderFilter(shader);
            var minValue:Number = shader.data.size["minValue"];
            var maxValue:Number = shader.data.size["maxValue"];
            var defaultValue:Number = shader.data.size["defaultValue"];
            shader.data.size.value = [defaultValue];
            img.filters = [filter];
            //Slider has a value between the 1st (min) and 2nd-argument (max), 
            //and the default value is defined by the 3rd-argument.
            slider = new SimpleSlider(minValue,maxValue,defaultValue);
            slider.x = 100;
            slider.y = stage.stageHeight/2 - slider.height/2;
        private function onChange(e:Event):void{
            shader.data.size["value"] = [slider.value];
            img.filters = [filter];
Submit comment