Actionscript 3 尝试删除一个延迟的圆。以错误告终。[AS3]
这是生成一个圆的代码。当它试图移除球时,会显示以下错误。给定的显示对象必须是调用方的子对象。首先,从代码中不清楚“ball”的定义。 如果它是一个数组,那么该行Actionscript 3 尝试删除一个延迟的圆。以错误告终。[AS3],actionscript-3,Actionscript 3,这是生成一个圆的代码。当它试图移除球时,会显示以下错误。给定的显示对象必须是调用方的子对象。首先,从代码中不清楚“ball”的定义。 如果它是一个数组,那么该行 public function circleSpawnAndRemove(e:TimerEvent):void { ball.graphics.beginFill(0xFFFFFF * Math.sin(0.1 * i), 0.5); ball.graphics.drawCirc
public function circleSpawnAndRemove(e:TimerEvent):void
{
ball.graphics.beginFill(0xFFFFFF * Math.sin(0.1 * i), 0.5);
ball.graphics.drawCircle(tel, 300 , kaas);
ball.graphics.endFill();
trace (i);
addChild(ball);
tel = 400;
kaas = ((125 - (Math.sin(50 * i) * 125 )) + 10)
i++
var remover:Timer = new Timer(24);
remover.addEventListener(TimerEvent.TIMER, ballRemover);
remover.start();
function ballRemover(e:TimerEvent):void
{
if ( i > 1 )
{
removeChild(ball[i]);
}
else
{
trace("stresss")
}
}
}
…正在尝试将阵列添加到后台。数组不是显示对象,因此这是不可能的。
如果不是数组,则该行
addChild(ball);
…将抛出一个错误,因为无论它是什么类型的类,都不太可能像数组一样使用索引表示法。
所以,你需要弄清楚“ball”是什么类,并坚持使用它的一种用法
我建议将ball作为CirclePawnAndRemove函数的局部形状变量,并从removeChild行中删除“[I]”:
removeChild(ball[i]);
您的代码还有一些其他潜在的问题;例如,“tel”和“kaas”变量在使用后才设置。如果您需要更多帮助,请告诉我。ball[i]会引用数组中的元素,但您没有ball数组。我也不认为您需要在初始计时器处理程序中嵌套另一个计时器。你能不能在新的球生成之前直接删除上一个球?作为补充:匿名函数,比如你的ballRemover,在AS3中是不好的编码实践。改为将其作为一个私有函数,当您不再需要eventlistener时,不要忘记删除它。
removeChild(ball[i]);
var ball:Shape = new Shape();
ball.graphics....
..removeChild(ball)