当前位置:  开发笔记 > 编程语言 > 正文

擦除精灵图形?

如何解决《擦除精灵图形?》经验,为你挑选了2个好方法。

如果我有一个精灵,我已经绘制了一些东西,我该如何删除我绘制的部分内容?我最好可以使用drawRect()一些"alpha = 0"颜料.

但是,我不相信这种beginFill()方法可以让你设置RGBA颜色(就像你可以bitmapData).alpha = 0在图形方法中设置beginFill()并没有真正做任何事情 - 它只是没有任何东西.

在我的特定用例中,掩码不是一种选择.

此外,呼叫clear()不是一个好的解决方案,因为它清除了一切.



1> Ross Henders..:

如果您不需要能够与Sprite下面的任何元素进行交互,那么您可以很好地实现这一点.

去做这个

    以您想要的形状创建一个Shape对象并将其cacheAsBitmap属性设置为true

    将您的Sprite cacheAsBitmap属性设置为true

    blendModeShape 的属性设置为BlendMode.ERASE

    将Shape添加到Sprite的显示列表中



2> Stiggler..:

不幸的是,你不能完全按照你希望用Graphics类做的.虽然擦除可能意味着你绘制了已经用背景颜色绘制的东西,但我猜你希望"将透明度"绘制回到Graphics对象上.使用0的alpha绘制并不是"没有" - 你只是看不到你画的是因为它是完全透明的.

这是使用向量而不是位图的方法."擦除"矢量的一部分意味着您正在创建一个全新的矢量,这将需要一些计算,而不是仅仅将某个像素设置为某个颜色值.图形不提供这样的高级功能,但您可以编写自己的功能来执行此操作.:P

一种解决方法是改为使用位图:
http : //www.actionscript.org/forums/showthread.php3?t = 187857
http://www.actionscripts.org/forums/showthread.php3?t=149021

另一个是考虑你是否可以用不同的方式实现你想要做的事情; 一个适合使用clear()的人.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有