Actionscript 3 删除阶段as3上的所有实例
我在删除舞台上的实例时遇到问题 在我点击按钮2次后,我一直得到的错误是 “提供的DisplayObject必须是调用方的子对象” 有人能帮我吗Actionscript 3 删除阶段as3上的所有实例,actionscript-3,Actionscript 3,我在删除舞台上的实例时遇到问题 在我点击按钮2次后,我一直得到的错误是 “提供的DisplayObject必须是调用方的子对象” 有人能帮我吗 package src { import flash.display.MovieClip; import flash.display.Stage; import flash.events.Event; import flash.events.MouseEvent; public class Main extends MovieClip {
package src
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends MovieClip
{
var positionY:Number = 80;
var positionX:Number = 0;
var motion:MovieClip;
var fCombo:Array = new Array();
var n:Number;
public function Main()
{
generate.addEventListener(MouseEvent.MOUSE_UP, loop);
generate.addEventListener(MouseEvent.MOUSE_DOWN, remove);
n = Number(inputText.text);
}
function loop(me:MouseEvent):void
{
var combo:Array = [Punch, Kick, Knee, Elbow];
n = Number(inputText.text);
for(var i:Number = 0;i < n;i++ )
{
motion = new combo[randomNumber(4)]();
fCombo.push(motion);
motion.y = positionY;
motion.x = positionX;
positionX += 100;
addChild(motion);
if (i == 4 || i == 9 || i == 14)
{
positionY += 40;
positionX = 0;
}
}
}
function remove(me:MouseEvent):void
{
for (var j:Number = 0; j < n; j++ )
{
removeChild(fCombo[j]);//error
}
positionY = 80;
positionX = 0;
}
function randomNumber(max:Number):Number
{
return(Math.floor(Math.random() * max ));
}
}
包src
{
导入flash.display.MovieClip;
导入flash.display.Stage;
导入flash.events.Event;
导入flash.events.MouseEvent;
公共类Main扩展了MovieClip
{
变量位置Y:数值=80;
变量位置X:数值=0;
动作:MovieClip;
var fCombo:Array=new Array();
var n:数字;
公共功能Main()
{
generate.addEventListener(MouseEvent.MOUSE\u UP,循环);
generate.addEventListener(MouseEvent.MOUSE_向下,移除);
n=编号(inputText.text);
}
函数循环(me:MouseEvent):void
{
变量组合:数组=[拳、踢、膝、肘];
n=编号(inputText.text);
对于(变量i:Number=0;i
}您正在将创建的新对象添加到数组中,然后使用该对象删除它们。但是您忘记了创建新列表或从旧列表中删除对象。因此,当循环列表时,您正试图删除已删除的对象 您可以通过多种方式解决此问题,一种是从循环中的阶段和阵列中移除对象:
function remove(me:MouseEvent):void
{
while(fCombo.length)
{
removeChild(fCombo.pop());
}
positionY = 80;
positionX = 0;
}
targetDisplayObject.parent.removeChild(targetDisplayObject);假设父项不为空,该技巧是否有效。在
removeChild(fCombo[j])中j
在哪里//错误
来自哪里?它似乎没有初始化。你到底想做什么?是否从显示中删除上次添加的组合?从显示中删除当前单击的组合?我正在尝试删除stageOkay中的每个实例,我看到了j,但我现在没有看到k
初始化。k
是否参考了fCombo.length
?此处看不到任何错误。尝试检查combo是否真的是该阶段的子级:if(this.contains(fCombo[j])removeChild(fCombo[j])
。