如果我有一个精灵,我已经绘制了一些东西,我该如何删除我绘制的部分内容?我最好使用drawRect()
一些“alpha = 0”的颜料。
但是,我不相信beginFill()
方法可以让您设置RGBA颜色(就像bitmapData
中一样)。在alpha = 0
的图形方法中设置beginFill()
并没有真正做任何事情 - 它只是什么都没有。
在我的特定用例中,掩码不是一种选择。
另外,调用clear()
不是一个好的解决方案,因为它会清除所有内容。
答案 0 :(得分:10)
如果您不需要与Sprite下面的任何元素进行交互,那么您可以很好地实现这一点。
要做到这一点
cacheAsBitmap
属性设置为true
cacheAsBitmap
媒体资源设为true
blendMode
属性设置为BlendMode.ERASE
答案 1 :(得分:5)
不幸的是,你不能完全按照你希望用Graphics类做的。虽然擦除可能意味着你绘制了已经用背景颜色绘制的东西,但我猜你希望“将透明度”绘制回到Graphics对象上。使用0的alpha绘制并不是“没有” - 你只是看不到你画的是什么,因为它是完全透明的。
这是使用向量而不是位图的方法。 “擦除”矢量的一部分意味着您正在创建一个全新的矢量,这将需要一些计算,而不是仅仅将某个像素设置为某个颜色值。图形不提供这样的高级功能,但您可以编写自己的功能来执行此操作。 :P
一种解决方法是使用位图代替:
http://www.actionscript.org/forums/showthread.php3?t=187857
http://www.actionscripts.org/forums/showthread.php3?t=149021
另一个是考虑你是否可以用不同的方式实现你想要做的事情;一个适合使用clear()的人。
答案 2 :(得分:0)
如果您希望在擦除其他部分时保留部分绘图,那么唯一可行的路线就是使用多个精灵绘制。 为绘图的每个部分创建一个精灵,然后你可以选择你想要删除的精灵,剩下的就是。
除了你剩下的就是使用bitmapdata来复制部分,然后在使用clear draw之后再次复制复制的部分。 (这在复杂的庄园中很难实现,只能复制一个复杂的弯曲区域!)