Falsh AS3 大师帮我解决这个困扰我一个下午的问题!?

来源:百度知道 编辑:UC知道 时间:2024/05/28 10:36:24
我创建了mask1-mask13的13个MC剪辑,同时为他们分别设置了一个导出链接名,也就是说它们可以是13个MC的扩展类,我现在想用代码随机的使用其中的一个mask*来创建一个新的MC,请问该怎么实现?我甚至都试了Dictionary来映射,好像没有成功!谢谢大师花时间关心我的Problem!感激不尽!
要注意是:随机的使用其中的一个类mask*来创建新的MC,其中*表示1-13之间的随机数字

var maskarray:Array=[new mask1(),new mask2(),new mask3(),new mask4(),new mask5(),new mask6(),new mask7(),new mask8(),new mask9(),new mask10(),new mask11(),new mask12(),new mask13()];
var randomn:Number=new Number();
var maskcon:Sprite=new Sprite();

randomn=Math.floor(Math.random()*12);
maskcon.addChild(maskarray[randomn]);
maskarray[randomn].gotoAndPlay(2);

addChild(maskcon);

笨方法,先实例化所有元件,再加载入场景。缺点是实例化后元件就被激活所以元件内第一帧要stop();
做过一次,大概是这样!

先剪辑再加MC,要不不行

你必须要深度拷贝对象,不能用dict简单引用,不然无论你怎么创建,最终只有一个不同的MC,不会有相同的两个。以mask13为例子:

var masknew:Sprite = new Sprite();
masknew.width = mask13.width;
masknew.height = mask13.height;
.....(把你要复制的属性都赋值一边,如果sprite里面有位图,请参考以下复制方法)
var bm:Bitmap = new Bitmap((mask13.getChildAt(0) as Bitmap).bitmapData);
bm.x = (mask13.getChildAt(0) as Bitmap).x;
bm.y = (mask13.getChildAt(0) as Bitmap).y;
masknew.addChild(bm);

最后将新MC加入场景:
addChild(m