![]() |
Цитата:
|
Если вы делаете игру без MVC, то слушать ENTER_FRAME должен класс игры(который содержит игровую область).
Вешается обычно слушатель как и все другие действия - при init(). Он вызывает у всех своих внутренних элементов, которые движутся метод update(), в котором изменяется анимация и позиция персонажа. |
Цитата:
Код AS3:
|
Сорри! Прежде чем ответить, я тоже сделал тест, но по какой-то мистической причине событие не вызывалось.
Нашел причину - Код AS3:
Код AS3:
|
Если я не ошибаюсь... А нет, ошибаюсь: Цитата:
|
А вдруг твой танк завтра будет из сети управляться? Или игрок из танка пересядет в подводную лодку. Всё как в жизни: Танк - он и в Африке танк, класс один. А какой водитель им управляет это уже другое дело. Получается три класса: Tank - с методами управления, AIDriver, PlayerDriver (который слушает клавиатуру и рулит танком, вызывая у него функции turnLeft(), gear(), break(), shoot()). А дальше вызывать player.setVehicle(tank). Причём игрока в академии научили рулить всеми устройствами которые могут ездить взад вперёд и поворачивать, поэтому у танка должен быть интерфейс IVehicle и Классы водителей работают именно с IVehicle, а не с конкретным танком.
|
Подпишусь под словами Rzer, всё правильно сказал.
И ещё добавлю, что вместо turnLeft можно сделать функцию, которая будет медленно поворачивать дупло танка влево-вправо, через ENTER_FRAME, и вторую функцию, которая будет давать целевой угол поворота. Функция по ENTER_FRAME будет плавно поворачивать тыкву танка в нужную сторону в зависимости от целевого угла. |
Цитата:
Я говорю это не по наслышке. Я просто делал игру Война Икс в вк (пришлось сейчас отключить из-за нерентабильности), и там сделал именно с интерфейсами (в точности как у вас описано). Ох и натерпелся я в ней проблем из-за этого |
Цитата:
|
Ну, я люблю мечтать, что когда-нибудь напишу игру, построенную на интерфейсах, как идеал. Кажется, это так здорово. До сих пор ни разу их не использовал.
А насчёт приведения типов... Разве не по иерархической структуре всё это собирается? Например, класс, реализующий методы интерфейса IPickable, называется Thing. Thing наследуется от Sprite. Яблоко наследуется от класса Thing. Неужели для добавления в DisplayList нужно приводить тип as DisplayObject? Я прост не пользовался интерфейсами никогда) Код AS3:
|
| Часовой пояс GMT +4, время: 20:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.