ActionScript 3:将同一对象的多个实例添加到舞台并分别移除每个实例
ActionScript 3: Adding multiple instances of the same object to the stage and removing each separately
我有一段代码可以将同一 MovieClip 的三个实例添加到舞台上。我还添加了 MouseEvent.CLICK 监听器。单击任何 MovieClip 后,我希望将其从舞台上删除。我的问题是,无论何时单击任何元素,只有最后一个元素被删除,当我再次单击另一个实例时,我得到:
ArgumentError:错误 #2025:提供的 DisplayObject 必须是调用者的子对象。
我将这三个 MovieClip 添加到一个数组中,但我不知道如何正确识别哪个实例被点击并仅删除所述实例。
这是我的代码摘录:
var myMC: SomeMC;
var myArray: Array = [];
function Loaded(e: Event): void {
for (var i: int = 0; i < 3; i++) {
myMC = new SomeMC();
myMC.addEventListener(MouseEvent.CLICK, Clicked);
myMC.y = 50;
myMC.x = 50 * i;
addChild(myMC);
myArray.push(myMC);
}
}
function imageClicked(e: MouseEvent){
// Only the last instance gets removed.
e.currentTarget.parent.removeChild(myMC);
}
如有任何帮助,我将不胜感激。
在 Loaded
函数中创建对象的 3 个实例,但是通过执行:
myMC = new SomeMC();
您覆盖了引用。在第一次迭代中 myMC
是第一个,在第二个中是第二个,等等...
然后在 imageClicked
中,您正试图将其删除。第一次它可以工作是因为它引用了最后一个对象,但是在您将它从舞台上移除后它就不再工作了。
将 e.currentTarget.parent.removeChild(myMC);
更改为 e.currentTarget.parent.removeChild(e.currentTarget);
怎么样?那应该删除点击的那个。
我有一段代码可以将同一 MovieClip 的三个实例添加到舞台上。我还添加了 MouseEvent.CLICK 监听器。单击任何 MovieClip 后,我希望将其从舞台上删除。我的问题是,无论何时单击任何元素,只有最后一个元素被删除,当我再次单击另一个实例时,我得到:
ArgumentError:错误 #2025:提供的 DisplayObject 必须是调用者的子对象。
我将这三个 MovieClip 添加到一个数组中,但我不知道如何正确识别哪个实例被点击并仅删除所述实例。
这是我的代码摘录:
var myMC: SomeMC;
var myArray: Array = [];
function Loaded(e: Event): void {
for (var i: int = 0; i < 3; i++) {
myMC = new SomeMC();
myMC.addEventListener(MouseEvent.CLICK, Clicked);
myMC.y = 50;
myMC.x = 50 * i;
addChild(myMC);
myArray.push(myMC);
}
}
function imageClicked(e: MouseEvent){
// Only the last instance gets removed.
e.currentTarget.parent.removeChild(myMC);
}
如有任何帮助,我将不胜感激。
在 Loaded
函数中创建对象的 3 个实例,但是通过执行:
myMC = new SomeMC();
您覆盖了引用。在第一次迭代中 myMC
是第一个,在第二个中是第二个,等等...
然后在 imageClicked
中,您正试图将其删除。第一次它可以工作是因为它引用了最后一个对象,但是在您将它从舞台上移除后它就不再工作了。
将 e.currentTarget.parent.removeChild(myMC);
更改为 e.currentTarget.parent.removeChild(e.currentTarget);
怎么样?那应该删除点击的那个。