![]() |
|
||||||||||
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Цитата:
|
|
|||||
|
Если вы делаете игру без MVC, то слушать ENTER_FRAME должен класс игры(который содержит игровую область).
Вешается обычно слушатель как и все другие действия - при init(). Он вызывает у всех своих внутренних элементов, которые движутся метод update(), в котором изменяется анимация и позиция персонажа.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Цитата:
package { import flash.display.Sprite; import flash.events.Event; public class TestClass extends Sprite { public function TestClass() { var s:Sprite = new Sprite(); s.addEventListener(Event.ENTER_FRAME, onEnterFrame) } private function onEnterFrame(e:Event):void { trace("enter frame"); // трейс срабатывает } } }
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Сорри! Прежде чем ответить, я тоже сделал тест, но по какой-то мистической причине событие не вызывалось.
Нашел причину - package { import flash.display.Sprite; import flash.events.Event; public class Juggler extends Sprite { public function Juggler() { super.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(event:Event):void { trace(event.type); } } } package { import flash.display.Sprite; import flash.events.Event; public class TestClass extends Sprite { public function TestClass() { //var juggler:Juggler = new Juggler();// так диспатчит // но в спешки я сделал так - new Juggler() // неужели GC так быстро срабатывает? // И какая разница между первым вариантом и вторым ??? //ведь в обоих случаях объект локальный... } } } |
|
|||||
|
Регистрация: Nov 2013
Сообщений: 86
|
Если я не ошибаюсь... А нет, ошибаюсь: Цитата:
|
|
|||||
|
А вдруг твой танк завтра будет из сети управляться? Или игрок из танка пересядет в подводную лодку. Всё как в жизни: Танк - он и в Африке танк, класс один. А какой водитель им управляет это уже другое дело. Получается три класса: Tank - с методами управления, AIDriver, PlayerDriver (который слушает клавиатуру и рулит танком, вызывая у него функции turnLeft(), gear(), break(), shoot()). А дальше вызывать player.setVehicle(tank). Причём игрока в академии научили рулить всеми устройствами которые могут ездить взад вперёд и поворачивать, поэтому у танка должен быть интерфейс IVehicle и Классы водителей работают именно с IVehicle, а не с конкретным танком.
__________________
if (love is true) break my.heart; Последний раз редактировалось Rzer; 28.05.2014 в 18:08. |
|
|||||
|
Подпишусь под словами Rzer, всё правильно сказал.
И ещё добавлю, что вместо turnLeft можно сделать функцию, которая будет медленно поворачивать дупло танка влево-вправо, через ENTER_FRAME, и вторую функцию, которая будет давать целевой угол поворота. Функция по ENTER_FRAME будет плавно поворачивать тыкву танка в нужную сторону в зависимости от целевого угла.
__________________
There is no thing in this world that is not simple. |
|
|||||
|
Цитата:
Я говорю это не по наслышке. Я просто делал игру Война Икс в вк (пришлось сейчас отключить из-за нерентабильности), и там сделал именно с интерфейсами (в точности как у вас описано). Ох и натерпелся я в ней проблем из-за этого
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
|
Ну, я люблю мечтать, что когда-нибудь напишу игру, построенную на интерфейсах, как идеал. Кажется, это так здорово. До сих пор ни разу их не использовал.
А насчёт приведения типов... Разве не по иерархической структуре всё это собирается? Например, класс, реализующий методы интерфейса IPickable, называется Thing. Thing наследуется от Sprite. Яблоко наследуется от класса Thing. Неужели для добавления в DisplayList нужно приводить тип as DisplayObject? Я прост не пользовался интерфейсами никогда)
__________________
There is no thing in this world that is not simple. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|