2013-05-02 67 views
0

有一个参数子女必须是与此代码的人非空的错误可以帮助?删除实例后excecuted 2

for (i=1; i<=4; i++) 
{ 
    this["Box" + i].addEventListener(Event.ENTER_FRAME, Move); 
    this["Box" + i].addEventListener(MouseEvent.CLICK, Action); 
} 
function Move(e:Event):void 
{ 
    e.target.y -= 6; 
    if (e.target.y <= 56) 
    { 
     MovieClip(e.target).removeEventListener(Event.ENTER_FRAME, Move); 
     removeChild(getChildByName(e.target.name)); 
     Comment.text = "MISS"; 
     miss += 1; 
     score += 0; 
    } 
} 
function Action(event:MouseEvent):void 
{ 
    if ((event.target.hitTestObject(bts1))&&(event.target.hitTestObject(bts2))&&(event.target.hitTestObject(bts3))&&(event.target.hitTestObject(bts4))) 
    { 
     MovieClip(event.target).removeEventListener(MouseEvent.CLICK, Action); 
     removeChild(getChildByName(event.target.name)); 
     Comment.text = "PERFECT"; 
     perfect += 1; 
     score += 10000; 
    } 
    else if ((event.target.hitTestObject(bts2)&&event.target.hitTestObject(bts3)&&event.target.hitTestObject(bts4))||(event.target.hitTestObject(bts1)&&event.target.hitTestObject(bts2)&&event.target.hitTestObject(bts3))) 
    { 
     MovieClip(event.target).removeEventListener(MouseEvent.CLICK, Action); 
     removeChild(getChildByName(event.target.name)); 
     Comment.text = "GREAT"; 
     great += 1; 
     score += 5000; 
    } 
    else if ((event.target.hitTestObject(bts3)&&event.target.hitTestObject(bts4))||(event.target.hitTestObject(bts1)&&event.target.hitTestObject(bts2))) 
    { 
     MovieClip(event.target).removeEventListener(MouseEvent.CLICK, Action); 
     removeChild(getChildByName(event.target.name)); 
     Comment.text = "GOOD"; 
     good += 1; 
     score += 2500; 
    } 
    else if ((event.target.hitTestObject(bts4))||(event.target.hitTestObject(bts1))) 
    { 
     MovieClip(event.target).removeEventListener(MouseEvent.CLICK, Action); 
     removeChild(getChildByName(event.target.name)); 
     Comment.text = "BOO"; 
     boo += 1; 
     score += 1000; 
    } 
    else 
    { 
     MovieClip(event.target).removeEventListener(MouseEvent.CLICK, Action); 
     removeChild(getChildByName(event.target.name)); 
     Comment.text = "MISS"; 
     miss += 1; 
     score += 0; 
    } 
} 

者均基于“bts1,2,3”是一个在线电影剪辑的问题发生在鼠标点击事件,我想是当我短声箱会做一个则hitTest在“BTS”和如果用户没有点击,那么它会在某个点消失

+0

如果你的剪辑阶段的孩子,尝试调用stage.removeChild,而不是仅仅removeChild之。 – Kodiak 2013-05-02 11:25:51

回答

0

删除孩子之前,您必须删除附加到它的所有侦听器,ENTER_FRAMECLICK等。只需复制和粘贴相同的行(这是一个有点不好的做法,当它将被修复时,您需要在这里进行一些重构)。

+0

这只是为了释放一些内存,它不应该抛出任何错误。 – Kodiak 2013-05-02 11:57:59

+0

我应该复制这行,对不起,我会有点迷惑,因为我是新的为3 – 2013-05-02 14:28:48

+0

每行前:'影片剪辑(event.target).removeEventListener(MouseEvent.CLICK,行动);'加入这一行:' MovieClip(event.target).removeEventListener(Event.ENTER_FRAME,Move);' – Cherniv 2013-05-02 14:41:00