2

bitmapData.floodfill() メソッドを使用して、「onclick」イベントを使用して画像を塗りつぶしたいと思います(ペイントバケットのように)。しかし問題は、透明な画像(png、gif)を使用する場合を除いて、この方法が機能しないことです。別のもの(青、赤など)を使用する場合、白(または私が思うにアルファ= 0)を使用してのみ塗りつぶされます。これは、ジェリーマウスを赤い色で塗りつぶしたときの様子です。clip2net.com/s/2nW65。埋め込み画像で使用した例を次に示します。

    var container:MovieClip = new MovieClip(); //container that would hold the image    
    jerry_img = new Resource.jerry_graph(); //jerry image from assets/jerry.gif         

    addChild(container);
    container.addChild(jerry_img);
    container.addEventListener(MouseEvent.CLICK, fill_function);

    public function fill_function(e:MouseEvent):void {              
        jerry_img.bitmapData.floodFill(e.localX, e.localY, 0x00FFFF);
    }

png または gif を JPEG に変更すると、塗りつぶしが機能し始めますが、このhttp://clip2net.com/s/2nW4Jのような深刻な視覚的問題でいっぱいになります。例の完全なソースは次のとおりですhttps://dl.dropbox.com/u/78904724/as_host/flood_fill.rar (Resource.as で jerry.gif を jerry.jpg に変更できます)

また、それがばかげた質問であり、私の英語力が低い場合は申し訳ありません。

4

1 に答える 1

1

組み込みの floodFill はエイリアシングを実装していません。正確な色のみを塗りつぶすため、アーティファクトなしで塗りつぶすには、png を準備する必要があります (基本的にはエイリアス化されたピクセルを削除します)。または、ここのような新しいフラッド フィル アルゴリズムを見つける

よろしくお願いします

于 2012-10-11T10:22:17.837 に答える