![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Доброе...
Переписываю код из кадров в классы. Столкнулся с проблемой, что если вызывать события, то они не отрабатываются. Вот пример: btn_unlock_1.addEventListener(MouseEvent.CLICK, lvl_1_stage); stage.addEventListener(KeyboardEvent.KEY_DOWN, downPers); stage.addEventListener(KeyboardEvent.KEY_UP, upPers); function lvl_1_stage(event:MouseEvent):void{ removeChild(game_menu); addChild(container_lvl_1); container_lvl_1.addChild(lvl_1); hero_1.x=190; hero_1.y=580; container_lvl_1.addChild(hero_1); trace("Создан первый уровень и персонаж"); addEventListener(Event.ENTER_FRAME, speedPers); } function downPers(event:KeyboardEvent):void{ trace(event.keyCode); if(event.keyCode==38){ //Up up=true; } else if(event.keyCode==40){ //Down down=true; }else if(event.keyCode==39){ //Right right=true; }else if(event.keyCode==37){ //Left //pers.gotoAndPlay("left"); left=true; } } function upPers(event:KeyboardEvent):void{ trace(event.keyCode); if(event.keyCode==38){ //Up up=false; hero_1.gotoAndStop(1); } else if(event.keyCode==40){ //Down down=false; hero_1.gotoAndStop(1); }else if(event.keyCode==39){ //Right right=false; hero_1.gotoAndStop(1); }else if(event.keyCode==37){ //Left left=false; hero_1.gotoAndStop(1); } } function speedPers(event:Event):void{ if(up){ //Up speedY -= power; if(hero_1.currentLabel != "up"){ hero_1.gotoAndPlay("up"); } } if(down){ //Down speedY += power; if(hero_1.currentLabel != "down"){ hero_1.gotoAndPlay("down"); } } if(right){ //Right speedX += power; if(hero_1.currentLabel != "right"){ hero_1.gotoAndPlay("right"); } } if(left){ //Left speedX -= power; if(hero_1.currentLabel != "left"){ hero_1.gotoAndPlay("left"); } } speedX *= friction; speedY *= friction; hero_1.x += speedX; hero_1.y += speedY; } 1120: Access of undefined property stage. 1120: Access of undefined property downPers. 1120: Access of undefined property stage. 1120: Access of undefined property upPers. Суть такая, нажимаю на кнопку и появляется уровень и персонаж, который реагирует на нажатие клавиш клавиатуры. stage перенес в функцию кнопки и поменял на контейнер, ошибки ушли, но и нажатие кнопок не отслеживается Подскажите пожалуйста. Спасибо.
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли Последний раз редактировалось firefedot; 24.05.2014 в 18:26. |
|
|||||
|
А зачем код из кадров переписывать в классы?
Ну, возможно, вам следует в конструкторе слушать событие Event.ADDED_TO_STAGE, и обрабатывать его в функции init, откуда и писать всю логику класса. Ссылка на stage у экземпляра типа DisplayObject появляется только при добавлении на сцену, и удаляется при удалении со сцены.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Просто до этого часть кода была в кадрах и в другом проекте)
А так, спасибо, посмотрю, что можно сделать, следуя совету.... Спасибо...
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
В таком случае лучше уж оставить в кадрах, потому, что если код из кадров использовать для классов то получается полная каша, и лучше уже писать с нуля.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
все переписал с нуля, а это место решил с копировать)
В общем написал container_lvl_1.addEventListener(Event.ADDED_TO_STAGE, added); public function added(event:Event):void{ trace("ok!"); } Спасибо. рано порадовался))) работает через раз, именно через раз. Добавлено через 9 минут Точней работает, но после клика мышкой по любой области
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Вот оно, спасибо.)
Мы этим тождеством указали, что все действия начинают работать разу на рабочей области? В итоге вот это не пригодился.
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
|
|||||
|
Этим мы дали флешке фокус на области, к которой крепим слушатели клавиатуры. Если текущий фокус != тот элемент, к которому мы прикрепили слушатель клавиатуры, то событие не диспатчится.
А точнее диспатчится, но у того элемента, на котором фокус. Это относится именно к событиям клавиатуры, но не мышки.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 129
|
Понял, спасибо большое.
__________________
-- Какой бы путь ты не выбрал, лягушка прыгнет врятли |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|