![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2010
Сообщений: 187
|
Помогите разобраться.
Вот у меня есть объект мувиклип, который я в главном классе создаю на сцене, а в другом классе у меня управление к этому клипу. Клип создаётся, а управление почему-то не работает. Подскажите, что я забыл сделать? Главный класс Game.as package { import flash.display.MovieClip; public class Game extends MovieClip { public function Game() { var hero:MovieClip = new Hero1(); hero.x = 100; hero.y = 100; addChild(hero); } } } package { import flash.display.MovieClip; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class Keys extends MovieClip { public function Keys() { stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed, false, 0, true); } private function onKeyPressed(evt:KeyboardEvent):void { switch (evt.keyCode) { case Keyboard.UP: hero.y -= 10; break; case Keyboard.DOWN : hero.y += 10; break; case Keyboard.LEFT : hero.x -= 10; break; case Keyboard.RIGHT : hero.x += 10; break; } } |
|
|||||
|
[+1 02.09.15]
Регистрация: Mar 2009
Адрес: Moscow
Сообщений: 469
|
Если скомпилить второй клас, то выдаст ошибку, что не определенна переменная hero. Первый ваш класс со вторым никак не связан и не знает что внутри первого есть переменная hero. Соответственно ничего и не происходит.
|
|
|||||
|
Регистрация: Jan 2010
Сообщений: 187
|
В первом классе (который Game.as) я вроде бы определяю переменную hero вот в этой строчке:
Во второй класс добавил строчку: Или это я зря? А как связать эти два класса? Объясните, если можно, попроще. Я только начал с AS3 и, честно говоря, тяжело идёт пока. |
|
|||||
|
Регистрация: Oct 2009
Адрес: x=9;y=9;z=1;
Сообщений: 22
|
//пример выдает
TypeError: Error #1009: Cannot access a property or method of a null object reference. //вот в этом месте stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed, false, 0, true); как я понял stage здесь вроде не выход из ситуации=) |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 187
|
Запутался.
Прилагаю мою последнюю версию. Она и не ругается ни на что (что вроде хорошо), но и не работает. Посмотрите пожалуйста. |
|
|||||
|
Ух, как я отвык от FlashIDE, а он, гад, еще и без автокомплита нормального... Так, во-первых, класс Keys у вас лежит просто рядом и никак не связан с главным классом. Сами классы должны быть расширены не от MovieClip, а от Sprite (прочитайте у Мука подробное руководство, там описывается). Во-вторых, к публичной переменной в другом классе следует обращаться как ИмяКласса.переменная. И вообще, зачем вешать нажатие клавиш на стейдж? Присоединить следует hero, так же логичнее - нет героя, нет и слушателя. Конечно, если его убрать предварительно. В таком случае к герою следует обращаться так - MovieClip(e.target). И вообще, следует поместить слушателя в класс-поведение героя. В-третьих, не старайтесь писать много в конструкторе, выносите в отдельные функции.
И разберитесь с форматированием, тратится лишнее время на то, чтобы разобрать этот простой, но кривоотформатированный код.
__________________
тут я Последний раз редактировалось КорДум; 04.05.2010 в 18:57. |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 187
|
Спасибо.
Кое что понял наконец. Буду разбираться. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|