我有一个名为tOne的课程。类代码如下。
public class tOne extends MovieClip {
private var _root:MovieClip;
public var tPath:Array = new Array();
public var index:int = 0;
public function tOne() {
this.addEventListener(Event.ADDED, beginClass);
this.addEventListener(Event.ENTER_FRAME, gameLoop);
}
private function beginClass(e:Event):void {
_root = MovieClip(root);
tPath = _root.tMovingPath; //Sets the tPath array to a bunch of coordinates
}
private function gameLoop(e:Event):void {
if (tPath[index] != null) {
this.x = tPath[index].xCoord;
this.y = tPath[index].yCoord;
tPath.splice(index, 1); //Here is the problem
index++;
}
}
}
我创建了这个类的三个实例,所以我有3个tOne对象。现在我的问题是,当我使用&t; tPath.splice(index,1)'时,它不会从其中一个tOne对象中删除该索引,而是从所有三个对象中删除。
因此,如果在tOne的第一个对象中,我的数组长度为3并删除其中一个,则会从tOne的其他两个对象中删除一个。
我不明白为什么。
任何人都可以向我解释发生了什么吗?
答案 0 :(得分:0)
在你的行
tPath = _root.tMovingPath;
您正在设置tPath以引用数组。所有三个对象的引用都将指向同一个数组。
您需要做的是制作该阵列的copy。一种方法:
tPath = _root.tMovingPath.concat();