Привет всем,
Изучаю actionScript недолго и как мне кажется, он себя очень странно ведет. Что ни начну делать, всё ему не так. Хотел узнать почему.
Всё работает, если пишу только в главном классе. А я хочу разделить прогу на 2 класса - Main и Beatle(это у меня игрок).
1). К примеру, хочу сделать обычное перемещение с помощью стрелок. На мой взгляд логично, если всё это будет в классе
Beatle. Задается скорость передвижения, добавляются слушатели событий и сами функции передвижения, а в
Main просто создается объект класса
Beatle.
В конструкторе класса
Beatle добавляю слушатель клавиатуры:

Код AS3:
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
Так не работает, пробую еще так и так:
Цитата:
|
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
|
Цитата:
|
this.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
|
Цитата:
|
Beatle.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
|
Никак не работает. Значит, слушатель событий клавиатуры из класса
Beatle назначить неполучается. Ну, фиг с ним, решил в классе
Main написать слушатели событий клавиатуры и вызывать метод класса Beatle для передвижения, типа
Beatle.walkLeft();
Добавляю слушатель событий в класс
Main, работает:

Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
Добавляю функцию
onKeyDownEvent() в класс
Main, в которой вызываю метод
beatle.walkLeft(); Да, при нажатии любой клавиши на клавиатуре объект должен двигаться влево:

Код AS3:
public function onKeyDownEvent():void
{
beatle.walkLeft();
}
Но метод объекта
beatle не вызывается из этой функции, хотя из конструктора класса
Main он вызывается.
Даже на таких простых вещах у меня уже проблемы, AS3 просто не дает мне разделить код на классы такими способами, хотя на мой взгляд они вполне логичны и удобны:
1). Слушатели событий и функции слушателей в классе
Beatle, а в классе Main только создается объект класса
Beatle и добавляется на сцену.
2). В классе Main слушатели событий и функции слушателей, которые вызывают нужные методы объектов, типа beatle.walkLeft();
Как разделить на классы программу так, что бы это работало?