2012-03-29 1 views
0

У меня есть некоторые проблемы с получением синтаксиса справа.Удалить прослушиватель событий и переместить фрагмент ролика в позицию

У меня есть клип, который добавляет звуки в массив, когда он касается других клипов. У меня есть кнопка остановки, чем я хочу удалить прослушиватель событий панели и отправить обратно в исходное положение.

Мой код:

//event listener for the start button 
playy.addEventListener(MouseEvent.CLICK, mouseClick2); 

function mouseClick2(event:MouseEvent):void 
{ 
    bar.addEventListener(Event.ENTER_FRAME, onEnter); 
} 


//Add event listener for the stop button 
stopp.addEventListener(MouseEvent.CLICK, mouseClick3); 


//when clicked remove listener send back to position 
function mouseClick3(event:MouseEvent):void 
{ 
    bar.removeEventListener(MouseEvent.CLICK, mouseClick3); 

    function mouseClick3(evt:Event):void 
    { 
     if(bar.x > 780) 
     { 
      bar.x = 215; 
     } 
    } 
} 


function onEnter(evt:Event):void 
{ 
    bar.x += 1; 

    if(bar.x > 780) 
    { 
     bar.x = 215; 
    } 

    for(var i:int=0; i<blocks.length;i++) 
    { 
     if (bar.hitTestObject(blocks[i])) 
     { 
      blocks[i].start(); 
     } 
     else 
     { 
      blocks[i].stopSound(); 
     } 
    } 
} 
+3

У вас есть одна проблема: 'function mouseClick3()' вложен в другую 'функцию mouseClick3()'. – Marty

ответ

0

Я предполагаю, что ваша функция должна быть таким:

//when clicked remove listener send back to position 
function mouseClick3(event:MouseEvent):void 
{ 
    bar.removeEventListener(MouseEvent.CLICK, mouseClick3); 

    if(bar.x > 780) 
    { 
     bar.x = 215; 
    } 
} 

Вопрос заключается в том, что у вас есть две функции «mouseClick3» там. Внутренний mouseClick3 никогда не выполняется, и removeEventListener будет нацеливаться на mouseClick3, который никогда не выполняется, поскольку это переменная, локальная в этой функции. Если вы удалите внутренний mouseClick3, код будет выполнен, и ваш слушатель будет нацелен на правильную функцию.

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