我一直在制作类似于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
由于
答案 0 :(得分:0)
问题是你首先使用floodFill
,然后使用draw
方法,它实际上用你提供的任何参数填充BitmapData
- 在你的情况下它是{ {1}}。
您应首先将boardRef
绘制到boardRef
,然后使用boardData
。最后,您需要创建新的floodFill
并显示它。
现在您要设置Bitmap
的{{1}}?不知道你想要什么,但你只需要添加新的子(新的Bitmap)