Удалить прослушиватель событий и переместить фрагмент ролика в положение - PullRequest
0 голосов
/ 29 марта 2012

У меня возникли проблемы с правильным синтаксисом.

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

Мой код:

//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();
        }
    }
}

1 Ответ

0 голосов
/ 30 марта 2012

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

//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, который никогда не выполняется, так как это переменная local в функции. Если вы удалите внутренний mouseClick3, код будет выполнен, и ваш слушатель нацелится на правильную функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...