Actionscript 3 AS3中的洪水填充

Actionscript 3 AS3中的洪水填充,actionscript-3,bitmap,bitmapdata,Actionscript 3,Bitmap,Bitmapdata,我一直在使用基本的绘画、橡皮擦和填充工具制作一个类似于MS Paint的基本绘画应用程序。这是最后一个给我带来麻烦的 我对使用BitmapData非常陌生,但其想法是,当用户单击电路板时,它会触发startFloodFill方法。如下所示: public static function startFloodFill(e:MouseEvent):void { trace("FLOODFILL"); var boardRef:MovieClip = e.cur

我一直在使用基本的绘画、橡皮擦和填充工具制作一个类似于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);
    }
有人能告诉我我做错了什么吗?当我点击时,电路板不会改变。我希望泛光填充用所选颜色填充整个位图,因为当我单击时,板是空白的

我还尝试将最后两行替换为:

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

感谢

问题在于,您首先使用泛光填充,然后使用draw方法,该方法实际上使用您给定的任何参数填充BitmapData—在您的情况下,它是boardRef

您应该首先将boardRef绘制到boardData中,然后使用泛光填充。最后,您需要创建新的位图并显示它

现在您正在设置电影剪辑的位图数据?!不知道您想要什么,但您只需要添加新的子对象新位图

boardRef是什么类型的对象?位图?为什么它有bitmapData属性?如果没有,为什么要分配它?如果它真的是一个位图,您应该对它的bitmapData进行泛光填充。