Цитата:
|
В 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()
}
}
}