【发布时间】:2012-05-13 06:46:23
【问题描述】:
我正在尝试使形状可用于复制。以下是对我所做的事情、我正在尝试做的事情以及我遇到的问题的解释:
- 在 Flash IDE(画笔)中手动绘制形状。
- 创建了一个包含该形状的新影片剪辑;作为一个类导出。
- 实例化类(var mc:MovieClip = new shapeMovieClip())。
- 在 mc 中添加对我想要的形状的引用 (var myShape:Shape = mc.getChildAt(0) as Shape;
- 这很完美,我现在有了自己的形状,但是如何在不实例化父 MovieClip 类的情况下复制它 - 可以吗?
我尝试创建一个新形状并使用 copyFrom() 图形方法无济于事,我相信此方法只是在引用的图形上进行绘制调用时复制它们,而我只是有一个形状的引用已经画好了。
现在我将影片剪辑扩展为精灵,实例化,从父级拉出形状并保存其引用,然后将精灵归零。有谁知道以这种方式复制形状的更好、更轻量级的策略?
【问题讨论】:
-
您可以尝试将其绘制到 bitmapData ,但没有其他方法可以从 IDE 克隆形状。
-
AFAIK 无法完成(ide 制作的形状与代码制作的形状的编译方式不同,因此您无法检索路径数据)。为什么不能创建更多 shapeMovieClips?
-
@Cay 这是我正在使用的当前解决方案,但我希望有比实例化多个不会使用的精灵更快的方法。
-
CarlMiller 您考虑过或尝试过@turbosqel 的建议吗?我相信,如果您一次要在屏幕上显示大量绘图实例,这可能是最好的主意。将DisplayObject绘制成BitmapData后就可以使用了,伪代码:graphics.beginBitmapFill(bmp); graphics.drawRect(x,y,bmp.width,bmp.height);否则,您不能在显示树的多个部分重复使用相同的显示对象,根据定义,树中的每个对象只有一个父对象。如果您愿意自己处理数据模型,尽管 bitmapData 工作得很好(低 CPU/内存)。
-
如果您要运行的设备可能具有 GPU(和最新的 Flash Player),为了获得更高的性能,您可以利用 Stage3D 对象来绘制 2D 对象如果你关心性能,我在这里找到了一个很好的教程:active.tutsplus.com/tutorials/games/…
标签: actionscript-3 flash