Actionscript 3 复制/克隆载体。<;MovieClip>;
如何复制向量的内容Actionscript 3 复制/克隆载体。<;MovieClip>;,actionscript-3,vector,duplicates,Actionscript 3,Vector,Duplicates,如何复制向量的内容 private var slotMC:MovieClip; private var slotV1:Vector.<MovieClip> = new Vector.<MovieClip>(); private var slotV2:Vector.<MovieClip>; private var slotV3:Vector.<MovieClip>; public function InputSlot
private var slotMC:MovieClip;
private var slotV1:Vector.<MovieClip> = new Vector.<MovieClip>();
private var slotV2:Vector.<MovieClip>;
private var slotV3:Vector.<MovieClip>;
public function InputSlot():void {
registerClassAlias("MovieClip", MovieClip);
for (var i:int = 1; i < typeAmount + 1; i++) {
SlotClass = Main.queue.getLoader('main_uiMC').getClass('slot0' + i) as Class;
slotMC = new SlotClass();
slotMC.name = "slot" + i;
//push to vector before randomly add to stage
slotV1.push(slotMC);
}
slotV2 = clone(slotV1);
trace('slotv2', slotV2);
}
private function clone(source:Vector.<MovieClip>):Vector.<MovieClip> {
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return myBA.readObject() as Vector.<MovieClip>;
}
private var slotMC:MovieClip;
专用变量slotV1:Vector.=新向量();
私有变量slotV2:向量。;
私有变量slotV3:向量。;
公用函数InputSlot():void{
注册分类别名(“MovieClip”,MovieClip);
对于(变量i:int=1;i
对于slotV2,它返回null。
或者在这种情况下,多维向量是更好的方法吗?
不过,我不确定将来会在MC中添加哪些其他信息。除非对象的类实现了
IExternalizable
,否则无法深度克隆任何类型的DisplayObject
的向量。这是因为深入克隆一个DisplayObject
需要克隆它的所有引用,包括整个子列表和阶段,并且您不能创建另一个阶段。因此,您最好通过在循环中创建更多的SlotClass
实例并将它们填充到相应的向量中来创建“深度克隆”
for (var i:int = 1; i < typeAmount + 1; i++) {
SlotClass = Main.queue.getLoader('main_uiMC').getClass('slot0' + i) as Class;
slotMC = new SlotClass();
// slotMC.name = "slot" + i;
// drop name setting, you'd better use position in vector to refer to the clip
//push to vector before randomly add to stage
slotV1.push(slotMC);
slotMC = new SlotClass();
slotV2.push(slotMC);
slotMC = new SlotClass();
slotV3.push(slotMC);
}
for(var i:int=1;i
在运行循环之前,不要忘记初始化向量
作为补充,是的,考虑到为什么需要这几个向量,使用多维向量可能更好。您需要深度克隆(即第一个向量中MCs的副本)还是浅层克隆(仅复制链接,不创建更多MCs)?3个插槽都需要将MC添加到后台,因此我认为这是深度克隆?