— 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
AstroのShaderFilter
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;

    [SWF(width="550",height="400",backgroundColor="0x0",frameRate="24")]
    
    public class PixelBender03 extends Sprite{
        
        [Embed(source="data/250.jpg")]
        private var TestImage:Class;
        
        //Set mime-type as "binary", 
        //because the pbj object is in the binary form.
        [Embed(source="data/Crystallize.pbj", 
                mimeType="application/octet-stream")]
        private var PbjObject:Class;
        
        private var img:Bitmap;
        private var shader:Shader;
        private var filter:ShaderFilter;
        private var slider:SimpleSlider;
        
        public function PixelBender03(){
            //Photo
            img = new TestImage();
            img.x = stage.stageWidth/2 - img.width/2;
            img.y = stage.stageHeight/2 - img.height/2;
            addChild(img);
            
            //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;
            addChild(slider);
            slider.addEventListener(Event.CHANGE,onChange);
        }
        
        private function onChange(e:Event):void{
            shader.data.size["value"] = [slider.value];
            img.filters = [filter];
        }
    }
}
0 comments
Submit comment