|
|
|||||
Регистрация: Apr 2011
Сообщений: 7
|
Проблема с gotoAndStop
Столкнулся с такой проблемой: на 1 кадре нажимаю "влево" - переходит на кадр 2, потом "вниз" переходит назад на первый кадр, а потом нажимая на первом кадре "вверх" он переходит на кадр 3, а не 10. Подскажите, пожалуйста, где моя ошибка.
действия первого кадра: stop (); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF); function keyboardF (e:KeyboardEvent):void { if (e.keyCode == Keyboard.LEFT) gotoAndStop (2); if (e.keyCode == Keyboard.UP) gotoAndStop (10); } |
|
|||||
[+4 06.05.14]
|
Ваша ошибка в том, что вы не удаляете событие, а нагромождаете их.
И не пишите в кадрах, а если уж пишите то stop (); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboardF); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF); function keyboardF (e:KeyboardEvent):void { if (e.keyCode == Keyboard.LEFT) gotoAndStop (2); if (e.keyCode == Keyboard.UP) gotoAndStop (10); } |
|
|||||
Регистрация: Apr 2011
Сообщений: 7
|
Большое спасибо!
|
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Цитата:
|
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Выпрашивать плюсы не честно.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
in4core не знает, что один и тот же обработчик дважды не подписывается.
|
|
|||||
Регистрация: Apr 2011
Сообщений: 7
|
Сделал так как посоветовал in4core, но вылезла еще одна проблема. Запускаю просмотр, перехожу стрелкой "влево" из кадра 1 во 2, во втором нажимаю "вправо" и он переходи на кадр 6, хотя во втором кадре такого действия у меня нет. Подскажите, пожалуйста.
действия первого кадра: stop (); stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyboardF); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardF); function keyboardF (e:KeyboardEvent):void { if (e.keyCode == Keyboard.LEFT) gotoAndStop (2); if (e.keyCode == Keyboard.UP) gotoAndStop (10); if (e.keyCode == Keyboard.RIGHT) gotoAndStop (6); } |
|
|||||
Пишите все в первом кадре.
stop (); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownListener); function onKeyDownListener(event:KeyboardEvent):void { if(currentFrame == 1) { if (event.keyCode == Keyboard.LEFT) gotoAndStop(2); if (event.keyCode == Keyboard.UP) gotoAndStop(10); } else if(currentFrame == 2) { if (event.keyCode == Keyboard.DOWN) gotoAndStop (1); if (event.keyCode == Keyboard.UP) gotoAndStop (3); } } |
|
|||||
если же хотите писать как писали, то исправьте во втором кадре:
на смысл ошибки в том, что вы отписываетесь от события прежде, чем подписаться на него, в то время, как вам надо отписать слушателя в предидущем кадре. Посмотрите внимательно. Последний раз редактировалось fish_r; 09.04.2011 в 13:30. |
Часовой пояс GMT +4, время: 03:23. |
|
« Предыдущая тема | Следующая тема » |
|
|