(我是AS3的新手)我在这里找到了一个有用的代码http://www.flashandmath.com/advanced/smoothdraw/,我正在尝试创建一个Erase按钮,我正在尝试使用 .cacheAsBitmap = true; 但只有在有掩码的情况下才能工作(我在某些AS2应用程序中看到这个,你可以擦除位图,然后你可以重绘)。 附:我稍微更改了代码以更改背景,现在 drawBackgroundfunction 看起来像这样:
function drawBackground():void {
//We draw a background with a very subtle gradient effect so that the canvas darkens towards the edges.
var mesh:Shape = new Shape();
var gradMat:Matrix = new Matrix();
gradMat.createGradientBox(700,500,0,0,0);
var bg:Sprite = new Sprite();
mesh.graphics.beginBitmapFill(new lignes(), null, true, false);
//bg.graphics.beginGradientFill("radial",[0xDDD0AA,0xC6B689],[1,1],[1,255],gradMat);
//bg.graphics.drawRect(0,0,700,500);
//bg.graphics.endFill();
mesh.graphics.drawRect(0, 0, 700, 500);
mesh.graphics.endFill();
boardBitmapData.draw(mesh);
mesh.cacheAsBitmap = true;
//We clear out the undo buffer with a copy of just a blank background:
undoStack = new Vector.<BitmapData>;
var undoBuffer:BitmapData = new BitmapData(boardWidth, boardHeight, false);
undoBuffer.copyPixels(boardBitmapData,undoBuffer.rect,new Point(0,0));
undoStack.push(undoBuffer);
}
我只是想创建一个Erase方法,谢谢你的帮助
编辑:我的意思是只删除点击的区域
答案 0 :(得分:0)
清理形状尝试:
mesh.graphics.clear();
清理Shape对象。我不知道你在使用boardBitmapData变量做了什么,也许还需要做一些事情。
答案 1 :(得分:0)
您需要在位图中转换画布,然后使用遮罩删除或混合模式ERASE,并再次绘制从遮罩位图创建新位图,最后将其用作背景。