[英]Strange behaviour when using BlendMode “erase” in flash AS3
任何人都可以在AS3中使用BlendMode.ERASE時如何避免看到線條?
這是一個例子。 我在舞台上繪制了一個黑色背景,然后將2個重疊的圓圈繪制成一個精靈,並嘗試從背景中刪除它們。
var solidBitmapData = new BitmapData(550,400,true,0x000000);
var mySpriteLayer = new Sprite();
// Create black background.
mySpriteLayer.graphics.beginFill(0x000000);
mySpriteLayer.graphics.drawRect(0,0,550,400);
mySpriteLayer.graphics.endFill();
// Draw it to bitmap data.
solidBitmapData.draw(mySpriteLayer);
// Clear sprite.
mySpriteLayer.graphics.clear();
// Draw two circles
mySpriteLayer.graphics.beginFill(0xFF0000);
mySpriteLayer.graphics.drawCircle(200,200,50);
mySpriteLayer.graphics.endFill();
mySpriteLayer.graphics.beginFill(0xFF0000);
mySpriteLayer.graphics.drawCircle(250,200,50);
mySpriteLayer.graphics.endFill();
// Draw circles to bitmap with blend mode erase.
solidBitmapData.draw(mySpriteLayer,null,null,BlendMode.ERASE);
// Create bitmap and add to stage.
var solidBitmap = new Bitmap(solidBitmapData);
addChild(solidBitmap);
我在談論圈子中間的線條。 這似乎與linestyle有關但我已經嘗試將其設置為零並將alpha設置為0但我無法擺脫線條。
有任何想法嗎?
您需要將' mySpriteLayer
'的cacheAsBitmap
屬性設置為' true
':
mySpriteLayer.cacheAsBitmap = true;
由於混合模式對像素執行計算,因此與光柵數據相比,它比矢量數據更精確。
this.blendMode = BlendMode.LAYER;
Adobe的ActionScript 3.0參考說明了類BlendMode和字段ERASE:
根據顯示對象的alpha值擦除背景。 此過程要求將父顯示對象的blendMode屬性設置為flash.display.BlendMode.LAYER。
也許這就是Sprite混合對背景的反應方式。 你在白色背景上用兩個黑色圓圈試過嗎? 如果你得到相同的線(只有白色),你可以得出結論這是混合的工作方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.