2013-05-02 3 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» является линия клипу проблемы возникают на событие щелчка мыши, что я хочу, когда я CLIK поле он будет делать HitTest на «БПС» и поле будет удалено после щелчка пользователя, если пользователь не щелкнет, тогда он исчезнет в определенный момент

+0

Если ваши клипы являются дочерними элементами сцены, попробуйте вызвать stage.removeChild, а не просто removeChild. – Kodiak

ответ

0

Перед тем, как удалить ребенка, вы должны удалить прикрепленные к нему ВСЕ прослушиватели, ENTER_FRAME и CLICK и т. д. Просто скопируйте и вставьте те же строки (это немного плохая практика, когда она будет исправлена, вам нужно будет сделать рефакторинг здесь).

+0

Это просто, чтобы освободить память, она не должна вызывать никаких ошибок. – Kodiak

+0

Какую строку мне нужно копировать, извините, я немного запутаюсь, потому что я новичок в качестве 3 –

+0

Перед каждой строкой: 'MovieClip (event.target) .removeEventListener (MouseEvent.CLICK, Action);' добавить эту строку: ' MovieClip (event.target) .removeEventListener (Event.ENTER_FRAME, Move); ' – Cherniv

Смежные вопросы