Показать сообщение отдельно
Старый 28.05.2014, 07:38
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
В main - вообще кода быть не должно кроме controller.init() или как кому нравится.
Для того, чтобы понять как все работает, и более менее разобраться в коде, то можно для начала и в Main писать всю логику, ничего страшного в этом не вижу. Все эти вьюшки и контроллеры новичку ни к чему. Со временем все это придет.
Цитата:
Регистрировать энтер-фрейм лучше во вьюшках танка, вполне, клавиатуру тоже можно, хотя я бы этим занялся в контроллере, где происходила бы обработка нажатий и дальнейший посыл куда надо.
У меня для этого вообще отдельный класс используется, в котором есть статический метод isDown(keyCode:uint):Boolean
и для ENTER_FRAME тоже отдельный класс. Но все это в данном случае можно и в Main добавить, чтобы лишний раз себе голову не засорять.

Цитата:
ТАК каким образом дать знать программе, что этот танк должен управляться игроком?
Заводим переменную
Код AS3:
private var _playerTank:Tank = null;
И при выборе танка, допустим он выбирается щелчком мыши, записываем ссылку на него в эту переменную
Код AS3:
private function onClick(e:MouseEvent):void {
   if (e.target is Tank) { // допустим у танка есть метод isPlayer():Boolean который показывает, может ли игрок воспользоваться этим танком
        var targetTank:Tank = e.target as Tank;
        if (targetTank.isPlayer()) {
            _playerTank = targetTank; 
        }
   }
}
Ну а дальше, в обработчике ENTER_FRAME проверяем (предположим, используются флаги upPresed, downPressed и т.д., для определения нажатия клавиш)
Код AS3:
private function onEnterFrame(e:Event):void {
   if (upPressed) {
        if (_playerTank) { // проверяем не null ли ссылка
             _playerTank.movie(); // movie - это не правильное название метода, так как movie переводится как фильм. Правильнее было бы назвать метод move()
        }
   }
}
__________________
Ко мне можно и нужно обращаться на ты)