AS3中的FloodFill

时间:2014-06-04 16:42:28

标签: actionscript-3 bitmap bitmapdata

我一直在制作类似于MS-Paint的基本绘画应用程序,使用基本的绘画,橡皮擦和填充工具。这是最后一个给我带来麻烦的。

我很擅长使用BitmapData,但想法是当用户点击棋盘时,会触发startFloodFill方法。如下所示:

public static function startFloodFill(e:MouseEvent):void
    {
        trace("FLOODFILL");
        var boardRef:MovieClip = e.currentTarget.parent.board;                      //Creates a reference to the board
        var boardData:BitmapData = new BitmapData(boardRef.width, boardRef.height); //Creates a new BitmapData with the same size as boardRef
        boardData.floodFill(e.localX, e.localY, 0x00CCCCCC);                        //Applies the FloodFill
        boardData.draw(boardRef);                                                   //Saves the boardRef as bitmapData
        boardRef.bitmapData = boardData;                                            //Updates the board
            boardRef.parent.addChild(boardRef);
    }

有谁能告诉我这里做错了什么?当我点击时,电路板不会改变。我希望FloodFill用所选颜色填充整个位图,因为当我点击时,电路板是空白的。

我也尝试用以下代码替换最后两行:

boardRef.addChild(new Bitmap(boardData) );                              //Updates the board

由于

1 个答案:

答案 0 :(得分:0)

问题是你首先使用floodFill,然后使用draw方法,它实际上用你提供的任何参数填充BitmapData - 在你的情况下它是{ {1}}。

您应首先将boardRef绘制到boardRef,然后使用boardData。最后,您需要创建新的floodFill并显示它。

现在您要设置Bitmap的{​​{1}}?不知道你想要什么,但你只需要添加新的子(新的Bitmap)