我正在尝试制作一个可用于复制的形状。这是我所做的、我正在尝试做的以及我陷入困境的解释:
- 在 Flash IDE(画笔)中手动绘制形状。
- 创建了一个包含形状的新影片剪辑;作为一个类导出。
- 实例化该类(var mc:MovieClip = new shapeMovieClip())。
- 添加对形状的引用mc我想要 (var myShape:Shape = mc.getChildAt(0) as Shape;
- 这很完美,我现在有了我的形状,但是如何在不实例化父 MovieClip 类的情况下复制它 - 这可能吗?
我尝试创建一个新形状并使用 copyFrom() 图形方法,但没有效果,我相信此方法只是在引用图形上进行绘制调用时复制绘制调用,而我只拥有已经存在的形状的引用画。
现在,我将影片剪辑扩展为精灵,实例化,从父级中拉出形状并保存其引用,然后将精灵清空。有谁知道以这种方式复制形状的更好、更轻量级的策略?
基本上取决于您是否需要缩放形状。如果你不这样做,并且你可以使用形状的固定大小的位图表示来解决它,那么将形状绘制到 BitmapData(称为光栅化 http://en.wikipedia.org/wiki/Rasterisation)和实例化 Bitmap 对象(正如其他评论者指出的那样)。代码会是这样的:
var base:Sprite = new shapeMovieClip();
var bmd:BitmapData = new BitmapData(base.width, base.height, true, 0);
bmd.draw(base);
var clip1:Bitmap = new Bitmap(bmd);
var clip2:Bitmap = new Bitmap(bmd);
如果您确实需要缩放剪辑,您将使用位图获得像素化。当缩小 Bitmap.smoothing 可以在一定程度上有所帮助(旋转时也是如此),但是如果您需要放大,您可能必须使用某种mip映射 http://en.wikipedia.org/wiki/Mipmap。这基本上是在不同比例级别创建一些形状的位图,然后根据当前比例交换它们。编码有一定的复杂性(使用辅助父级来调整比例会有所帮助),但它肯定会比使用许多形状符号(有或没有精灵父级)表现得更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)