AS3中的duplicateMovieClip movieclip goto

AS3中的duplicateMovieClip movieclip goto
上回写了个AS2转AS3的教程(沙聚文字效果),主要是使用OOP的理念对旧代码进行了改造。后来有个网友问到,在AS2中最喜欢用的duplicateMovieClip(很多特效都用到这个方法)没有了,如果都用类去实现,那反不如AS2中用得那样方便了。后来想了想,在网上搜索了一些资料,在AS3中实现一个模拟AS2的duplicateMovieClip的方法。基本思路就是对对象属性值的拷贝。由于AS2和AS3中的MovieClip属性有改变了,所以有些属性需要通过赋值实现(如transform,这个属性中包括了对象的x,y属性等),别的(如width等)通过重新调用其构造函数实现即可。package tang { importflash.display.MovieClip; importflash.geom.Rectangle; publicclass as2Utils{ publicstatic function duplicateMovieClip(source:MovieClip, isAdd:Boolean= false):MovieClip{ //调用源对象类的构造函数 var tclass:Class =Object(source).constructor; var copy:MovieClip = newtclass(); //对有差异的属性进行复制。 copy.transform =source.transform; copy.filters =source.filters; copy.cacheAsBitmap =source.cacheAsBitmap; copy.opaqueBackground =source.opaqueBackground; if (source.scale9Grid){ var rect:Rectangle = source.scale9Grid; //这个据说是flash9中scale9Grid的一个bug. rect.x /= 20, rect.y /= 20, rect.width /= 20,rect.h--eight /= 20; copy.scale9Grid =rect; } //是否自动添加到与源对象相同的父对象中。 if (isAdd&& source.parent) { source.parent.addChild(copy); } return copy; }}}
这个类做好了,建一个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发布到各监听的客户端,在客户端再进行反序列为来还原自定义的类对象。

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/313038.html

更多阅读

怎样使用百度工具栏保存网页中的视频、音频? 保存网页音频

很多网友为了保存网页上的音视频伤透了,脑筋,安装了各种各样的软件,甚至用上了屏幕录像。其实完全不用这么麻烦,只需用一个小插件就能轻松下载。怎样使用百度工具栏保存网页中的视频、音频?——工具/原料IE浏览器 百度工具栏怎样使用百度

装饰画中的风水玄机 墙面装饰画风水

装饰画中的风水玄机张恕老师小威迷恋武侠、玄异作品,他的卧室墙壁上,几乎贴满了自己根据小说内容绘制的漫画、插图,将自己也融入了作品当中。慧慧喜欢小清新的风格,雨后的田野、落日时的草原、静静的荷塘,几乎就是她小家中装饰画的主

现货交易中的行业术语 现货持有过夜收费吗

现货交易中的行业术语,我们需要从基本的语言认识现货交易是怎么回事。  01、现货挂牌交易:是指在交易市场主持下,在交易市场规定的可交易范围内,交易商通过现货挂牌电子交易系统发出要约,在规定的交易时间内以“价格优先,时间优先”的

CF中的基本操作按键大全 穿越火线按键操作大全

CF中的基本操作按键大全——简介玩好CF不知道快捷键怎么行!!下面让我来为你介绍这些快捷键吧!让我们把CF玩high起来!CF中的基本操作按键大全——基本操作CF中的基本操作按键大全 1、基本操作:鼠标左右键+W、A、S、D 进行前、后、左、右

支付宝中的保证金如何解冻 淘宝保证金解冻

支付宝中的保证金如何解冻——简介 自己开网店的时候,一般都需要交保证金,这个保证金是冻结在自己的支付宝账号中的,也就说,钱在自己的支付宝账号里,只是暂时不能用。不开网店时,就需要把自己的保证金解冻,那么如何解冻呢?下面小编就分享一

声明:《AS3中的duplicateMovieClip movieclip goto》为网友不介意分享!如侵犯到您的合法权益请联系我们删除