感谢您看到我的帖子。 转到问题: 我在库中有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()
如何解决此问题,尽管我的代码仍然有效。如果这个问题太困难了,请告诉我这是否影响了我的游戏。
非常感谢。也很抱歉,因为我的英语不好。
答案 0 :(得分:0)
”我将 thebugboss 拖到舞台上,然后将其命名为
bugboss
。我用的是:bossArray.push(bugboss);
。还有 bosshientai 就是这样”
不要拖动上司。通过代码添加。像bugboss.x
这样的代码似乎可以正常工作,因为它正在与实例名称为bugboss
的舞台对象通信。
removeChild 需要一个变量而不是拖动的项目。
"The supplied DisplayObject must be a child of the caller"
发生错误是因为您显示的代码没有添加(拖动),所以现在代码无法删除本身未添加的内容。
假设链接名称为thebugboss
:
1)创建thebugboss
类的新实例(即:新副本):
public var bugboss : thebugboss = new thebugboss();
2)添加到舞台,也添加到数组。
stage.AddChild(bugboss);
bossArray.push(bugboss);
3)像往常一样尝试其他代码(测试removeChild()
)