如何解决AS3中的legend error#2025?
How to solve the legend error#2025 in AS3?
感谢您看到我的 post。
转到问题:
我在库中有 2 个名为 "thebugboss" 和 "spiderboss" 的 Movieclip,它们都链接到它们的 Class。我将它拖到舞台上并将其命名为 "bugboss" 和 "spiderbossit"。我也把它们推到老板阵列。当我杀死老板时,它有一些输出消息 2025 但我的代码仍然有效。
但我担心,因为我的代码现在不干净,而且我认为它可能每次都出错。这是我的代码:
var currentboss:Number=0;
stage.addEventListener(Event.ENTER_FRAME, defeatboss);
function defeatboss(e:Event):void
{
for (var kb:int=0; kb<bossArray.length; kb++)
{
var bosshientai=bossArray[kb];
if (bosshientai.hp<=0)
{
if (currentboss==0)
{
addReward(bosshientai.x ,bosshientai.y ,3);
addReward(bosshientai.x-10 ,bosshientai.y ,3);
addReward(bosshientai.x-20 ,bosshientai.y ,3);
addReward(bosshientai.x-30 ,bosshientai.y ,3);
removeChild(bosshientai);
bossArray.splice(kb, 1);
stage.removeEventListener(Event.ENTER_FRAME, bugbossLoop);
bugTimer.stop();
bugTimer2.stop();
bugTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, buggo);
bugTimer2.removeEventListener(TimerEvent.TIMER_COMPLETE, bugstop);
currentboss++;
}
if (currentboss==1)
{
addReward(bosshientai.x ,bosshientai.y ,3);
addReward(bosshientai.x-10 ,bosshientai.y ,3);
addReward(bosshientai.x-20 ,bosshientai.y ,3);
addReward(bosshientai.x-30 ,bosshientai.y ,3);
removeChild(bosshientai);
bossArray.splice(kb, 1);
stage.removeEventListener(Event.ENTER_FRAME, spiderLoop);
spiTimer.stop();
spiTimer2.stop();
spiTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, spigo);
spiTimer2.removeEventListener(TimerEvent.TIMER_COMPLETE, spistop);
currentboss++;
}
}
}
}
你只需要关心"removeChild"。它的错误是这样的:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at Holyshitman_fla::MainTimeline/defeatboss()
请问如何解决这个问题,虽然我的代码仍然有效。如果那个问题太难了,请告诉我它对我的比赛有影响吗?
非常感谢。也很抱歉,因为我的英语不好。
"I drag thebugboss to the stage, then I name it bugboss
. I use this : bossArray.push(bugboss);
. And the bosshientai is like this"
不要把老板拖上舞台。通过代码添加它。您的代码 bugboss.x
似乎可以工作,因为它正在与实例名称为 bugboss
的阶段对象对话。
removeChild 需要一个变量而不是拖动的项目。
"The supplied DisplayObject must be a child of the caller"
发生错误是因为您显示的代码没有添加它(您拖动),所以现在代码无法删除本身没有添加的内容。
假设链接名称是 thebugboss
:
1) 创建thebugboss
class:
的新实例(即:一个新副本)
public var bugboss : thebugboss = new thebugboss();
2) 添加到舞台并添加到阵列。
stage.AddChild(bugboss);
bossArray.push(bugboss);
3) 照常尝试您的其他代码(测试 removeChild()
)
感谢您看到我的 post。 转到问题: 我在库中有 2 个名为 "thebugboss" 和 "spiderboss" 的 Movieclip,它们都链接到它们的 Class。我将它拖到舞台上并将其命名为 "bugboss" 和 "spiderbossit"。我也把它们推到老板阵列。当我杀死老板时,它有一些输出消息 2025 但我的代码仍然有效。 但我担心,因为我的代码现在不干净,而且我认为它可能每次都出错。这是我的代码:
var currentboss:Number=0;
stage.addEventListener(Event.ENTER_FRAME, defeatboss);
function defeatboss(e:Event):void
{
for (var kb:int=0; kb<bossArray.length; kb++)
{
var bosshientai=bossArray[kb];
if (bosshientai.hp<=0)
{
if (currentboss==0)
{
addReward(bosshientai.x ,bosshientai.y ,3);
addReward(bosshientai.x-10 ,bosshientai.y ,3);
addReward(bosshientai.x-20 ,bosshientai.y ,3);
addReward(bosshientai.x-30 ,bosshientai.y ,3);
removeChild(bosshientai);
bossArray.splice(kb, 1);
stage.removeEventListener(Event.ENTER_FRAME, bugbossLoop);
bugTimer.stop();
bugTimer2.stop();
bugTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, buggo);
bugTimer2.removeEventListener(TimerEvent.TIMER_COMPLETE, bugstop);
currentboss++;
}
if (currentboss==1)
{
addReward(bosshientai.x ,bosshientai.y ,3);
addReward(bosshientai.x-10 ,bosshientai.y ,3);
addReward(bosshientai.x-20 ,bosshientai.y ,3);
addReward(bosshientai.x-30 ,bosshientai.y ,3);
removeChild(bosshientai);
bossArray.splice(kb, 1);
stage.removeEventListener(Event.ENTER_FRAME, spiderLoop);
spiTimer.stop();
spiTimer2.stop();
spiTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, spigo);
spiTimer2.removeEventListener(TimerEvent.TIMER_COMPLETE, spistop);
currentboss++;
}
}
}
}
你只需要关心"removeChild"。它的错误是这样的:
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at Holyshitman_fla::MainTimeline/defeatboss()
请问如何解决这个问题,虽然我的代码仍然有效。如果那个问题太难了,请告诉我它对我的比赛有影响吗?
非常感谢。也很抱歉,因为我的英语不好。
"I drag thebugboss to the stage, then I name it
bugboss
. I use this :bossArray.push(bugboss);
. And the bosshientai is like this"
不要把老板拖上舞台。通过代码添加它。您的代码 bugboss.x
似乎可以工作,因为它正在与实例名称为 bugboss
的阶段对象对话。
removeChild 需要一个变量而不是拖动的项目。
"The supplied DisplayObject must be a child of the caller"
发生错误是因为您显示的代码没有添加它(您拖动),所以现在代码无法删除本身没有添加的内容。
假设链接名称是 thebugboss
:
1) 创建thebugboss
class:
public var bugboss : thebugboss = new thebugboss();
2) 添加到舞台并添加到阵列。
stage.AddChild(bugboss);
bossArray.push(bugboss);
3) 照常尝试您的其他代码(测试 removeChild()
)