AS3中的duplicateMovieClip的替代
发布时间:2020-12-15 07:13:15 所属栏目:百科 来源:网络整理
导读:基本思路就是对对象属性值的拷贝。由于AS2和AS3中的MovieClip属性有改变了,所以有些属性需要通过赋值实现(如transform,这个属性中包括了对象的x,y属性等),别的(如width等)通过重新调用其构造函数实现即可。 ? package tang {? ? ?? ? ? ?? import flas
基本思路就是对对象属性值的拷贝。由于AS2和AS3中的MovieClip属性有改变了,所以有些属性需要通过赋值实现(如transform,这个属性中包括了对象的x,y属性等),别的(如width等)通过重新调用其构造函数实现即可。
?
package tang {?
?
?
?
?
{
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
}
}
这个类做好了,建一个FLA来测试。先在FLA中创建一MC元件,名为testObj,该MC中有一动态文本,做为标签使用。如图:
然后在第1帧添加代码:
import tang.as2Utils;
var copy:MovieClip;
for(var i:int=1;i<=5;i++)
{
copy=as2Utils.duplicateMovieClip(testObj,true);
copy.x=(copy.width+5)*i;
copy.label.text=i.toString();
}
运行。这里有一个TypeError错误(由于copy.label产生)。舞台上看不到有怎么对象被复制了。如图:
这是因为没有在库中给这个MC元件导出类。设置导出类之后,就可以看到效果了。(在库中的此元件的属性里勾选“为ActionScript导出”,类名可以用默认的,有个警告提示框,不用理会)。这时再运行,就可以看到结果了。
如图:
扩展:
在AS3的舞台显示方面,不只是提供了MovieClip,还有不带时间轴的Sprite,这两个类是主要用于舞台显示的,上例只是实现了考贝MovieClip的功能,但要实现拷贝Sprite也是一样的道理的,因为MovieClip和Sprite都同继承于DisplayObject,只要把上例中的MovieClip类改成DisplayObject类来实现,则此duplicateMovieClip即可实现关于DisplayObject对象的拷贝。
记得原来在做FMS编程时,想通过ShareObject远程对象来传递自定义对象,就像是JAVA中使用的序列化/反序化般。但ShareObject支持的对象有限,并不支持自定义的类存储。当时也使用了类似这样拷贝的方法,将客户端的对象序列化成字符串后,再传到FMS端,再由FMS发布到各监听的客户端,在客户端再进行反序列为来还原自定义的类
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |