Если я вызову функцию из активированной функции MouseEvent, она не будет работать должным образом? - PullRequest
0 голосов
/ 03 января 2012

Я работаю с AS3 над созданием очень простого mp3-плеера на моем сайте.Пока что кнопка воспроизведения и паузы работает нормально, но когда я пытаюсь переместить ползунок, затем нажимаю кнопку паузы, она не останавливается, а затем снова нажимает кнопку воспроизведения, чтобы воспроизвести новый файл.

Я предполагаю, что по какой-то причине, когда я вызываю функцию playMp3 из моего MouseEvent, она находится внутри объекта или чего-то другого, а не в корне, так что это похоже на загрузку нового звукового файла, но я не знаю, как это исправить.

Вот мой код, любые другие предложения о моем коде приветствуются, я новичок в этом и всегда ищу лучший способ сделать что-то:

http://pastebin.com/uN8QFanX

Ответы [ 2 ]

1 голос
/ 04 января 2012


похоже, что ваша проблема вызвана событием MOUSE_UP.

В функции pickupSlider вы добавляете:
parent.addEventListener (MouseEvent.MOUSE_UP, dropSlider);

но в функции dropSlider вы удаляете только прослушиватель для MOUSE_MOVE, поэтому MOUSE_UP будет продолжать вызывать функцию dropSlider. Если вы добавите:
parent.removeEventListener (MouseEvent.MOUSE_UP, dropSlider);
в вашей функции dropSlider он должен работать нормально.

// СОВЕТ
Вам не нужно каждый раз добавлять CLICK listener в функции playMp3 и pauseMp3, если вы их никогда не удаляете. Вы можете добавить их оба в начале и продолжать добавлять / удалять кнопки при необходимости (или использовать вместо этого .visible true / false). Слушатели по-прежнему привязаны к объектам, даже если они удалены со сцены. Это важно, потому что, если однажды U захочет удалить объект и оставить слушателей, сборщик мусора не возьмет его, и у вас будут утечки памяти.

0 голосов
/ 04 января 2012

Похоже, вы не удаляете прослушиватель MOUSE_UP в функции dropSlider().Поэтому, когда вы нажимаете кнопку паузы (предположительно слева от дорожки ползунка), она вызывает dropSlider со значением x меньше 40, сбрасывая дорожку в начало.

Добавьте эту строку к dropSlider() функция, и вы должны быть хороши, чтобы пойти:

parent.removeEventListener(MouseEvent.MOUSE_UP, dropSlider);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...