2007/08/31 | AS3 中 MovieClip 的复制
类别(Flash学习笔记) | 评论(5) | 阅读(4693) | 发表于 21:34

 相信很多人和我一样,看到熟悉的duplicateMovieClip、attachMovieClip在AS3中都被remove(拿)掉了,一定会很好奇,复制MC这么一个“简单”的功能在AS3中该怎么实现呢?

 在帮助中给出的线索是用MovieClip构造函数来实现这一功能,这句话看起来就像是个谜,究竟构造函数怎么才能具有这样的功能呢?

 于是我试着在场景中建一个元件,在库中还像以前一样打开该元件的链接属性,AS3中ID是不可用的,那么写个类名好了,点确定之的后,系统提示,找不到相关的AS类文件,并且自动的设置一个,经过这一步,这个库中的元件就变成一个类了,之后回到场景中用new操作名来新建几个元件,“复制”的功能竞然就这样实现了。

 利用for循环,还可以批量生成新的元件的实例,也是就批量复制的效果。

var ar:Array = new Array(5);
for (var i = 0; i<5; i++) {
   ar[i] = new mMC();
   ar[i].x = i*10;
   ar[i].y = i*10;
   addChild(ar[i]);
}

 对于学习AS程度不深的人来说,在接触到AS3的时候,我们面临的往往是一些简单功能的实现,一旦这些看似简单的问题一个个的解决掉,那么就比较容易上手AS3了。网上最先讨论AS3的人多是些高手,并且很多人是从flex开始入手AS3的,因此,看到很多的示例和代码都是以 package 开头,花括号结尾的纯AS文件,让人摸不清头脑,难道AS3的学习必须是从package 开始吗?

 个人以为,不是这样的,特别是在flash9推出以后,在一些时间轴和代码混合结构的flash文件中,依旧可以按照以前的习惯来使用flash,变的只是一些类的层次关系。作为初学者,还是可以在时间轴中按照以前的习惯来书写代码,AS2中没有使用过自定义类的,AS3中同样可以很少用到,这或许算得上是一种平民化的用法,但这样更有利于我们从AS2向AS3的过渡。

 当然,类的基本知识还是必要的,特别是AS3中,MovieClip的众多属性已经被“分散”到它的父类中去了,在这种情况下,为了搞明白是否具有某个属性,或是为了解某个属性的用途,就必须从它的父类中逐一进行查找。

 发一个实例,库中有一个方框线的元件,加上阴影滤镜后,再转换成元件,这个元件的链接属性窗口中设置类名为myMC2,场景中用下面的代码,复制出5个mc,并且分散排列。

var ar:Array = new Array(5);
for (var i = 0; i<5; i++) {
   ar[i] = new myMC2();
   ar[i].x = i*40 + 30;
   ar[i].y = (i%2)*20 + 30;
   addChild (ar[i]);
}

 压缩包下载

0

评论Comments