Показать сообщение отдельно
Старый 07.01.2013, 11:48
zzSpirit вне форума Посмотреть профиль Отправить личное сообщение для zzSpirit Найти все сообщения от zzSpirit
  № 1  
Ответить с цитированием
zzSpirit
 
Аватар для zzSpirit

Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
По умолчанию Разделение программы на классы

Привет всем,
Изучаю 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();

Как разделить на классы программу так, что бы это работало?