如何复制向量的内容?
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>;
}它返回slotV2的null。或者在这种情况下,多维向量会是更好的方式吗?我不知道我还会在未来的MC中添加什么信息。
发布于 2014-05-07 11:14:04
除非对象的类实现DisplayObject,否则不能深入克隆任何类型的IExternalizable向量。这是因为深入克隆一个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);
}不要忘记在运行循环之前初始化向量。
另外一点是,考虑到为什么需要这几个向量,使用多维向量可能更好。
https://stackoverflow.com/questions/23515619
复制相似问题