Ответ на первый вопрос: на самом деле вы говорите о простом игровом фреймворке для флеш-платформы.Тот, который я использовал, основан на подходе конечного автомата.Каждое состояние представляет некоторый игровой элемент (меню или реальная игра, в вашем случае):
public static const STATE_SCENE_1:int = 10;
public static const STATE_SCENE_2:int = 20;
public static const STATE_GAME_OVER:int = 30;
public var gameState:int = 0;
Далее вам нужно переключить игровые состояния (например, из меню в игру), лучше всего использовать основную игруloop:
public function gameLoop(e:Event):void {
switch(gameState) {
case STATE_SCENE_1 :
initScene1();
break
case STATE_SCENE_2:
initScene2();
break;
case STATE_GAME_OVER:
gameOver();
break;
}
}
Обратите внимание, что в предыдущем коде есть функция с именем gameLoop (), вам нужно вызывать ее итеративно с помощью событий таймера или события ENTER_FRAME:
public function Game() {
addEventListener(Event.ENTER_FRAME, gameLoop);
gameState = STATE_INIT;
}
Послеэто, вся ваша обработка игры перейдет к функции initScene1 ().Там вы можете добавить свое стартовое меню и анимировать его, как вам нужно.
Здесь, в initScene2 (), идет логика вашей игры.Вы можете создавать врагов, заставлять их двигаться и другую логику.
public function initScene2():void {
makeEnemies();
moveEnemies();
testCollisions();
testForEnd();
}
Далее, если логика основной игры решает завершить игру, вам нужно переключить состояние на STATE_GAME_OVER и показать результаты игрока в функции gameOver (),Чтобы получить более подробную информацию об игровых фреймворках, вы можете использовать «Основное руководство по флеш играм» Джеффа Фултона и Стива Фултона.
Надеюсь, это поможет.