
Framework: Layers & GUI
После того, как мы отнаследовали от State наш игровой экран, нам нужно реализовать для него интерфейс. Для начала вот вам реализация класса State.
Нас интересует метод createLayer. Он упрощает создание пустых спрайтов, которые затем используются в качестве слоёв для организации игровой графики. Для начала создадим слой GUI, в котором будет наш интерфейс. Сам интерфейс создаётся во Flash IDE и всем необходимым элементам выставляются соответствующие Instance Name'ы. Выглядит это примерно вот так.
Класс ButtonManager реализует создание кнопок из обычных MovieClip. Его реализация у меня в последнее время несколько разрослась из-за различных нужд, поэтому листинг не привожу, но в целом там происходит установка событий, buttonMode и реакция на наведения и нажатия (смена кадров). Если будет сильно интересно, то может, всё-таки, и выложу листинг.
Игровая графика так же располагается в соответствующих слоях, но об этом позже...
package elmortem.states {
import flash.display.Sprite;
import flash.events.Event;
public class State extends Sprite {
public var attr:Object;
public function State(attrIn:Object = null):void {
attr = attrIn;
addEventListener(Event.ADDED_TO_STAGE, onInit);
}
private function onInit(e:Event):void {
removeEventListener(Event.ADDED_TO_STAGE, onInit);
init();
dispatchEvent(new StateEvent(StateEvent.INIT));
}
protected function init():void {}
public function free():void {
dispatchEvent(new StateEvent(StateEvent.FREE));
}
public function createLayer(name:String, parent:Sprite = null):Sprite {
var layer:Sprite = new Sprite();
layer.name = name;
if (parent == null) parent = this;
parent.addChild(layer);
return layer;
}
}
}
Нас интересует метод createLayer. Он упрощает создание пустых спрайтов, которые затем используются в качестве слоёв для организации игровой графики. Для начала создадим слой GUI, в котором будет наш интерфейс. Сам интерфейс создаётся во Flash IDE и всем необходимым элементам выставляются соответствующие Instance Name'ы. Выглядит это примерно вот так.
public class Mainmenu extends State {
// layers
private var GUI:Sprite;
// gui
private var gui:GuiMainmenuProto;
public function Mainmenu(attrIn:Object = null) {
super(attrIn);
}
protected function init():void {
// layers
GUI = createLayer("GAME", this);
// gui
GUI.addChild(gui = new GuiMainmenuProto());
ButtonManager.add(gui.btn_gameplay, onClick_Gameplay);
}
private function onClick_Gameplay(e:MouseEvent):void {
Main.stateManager.show(new Gameplay());
}
}
Класс ButtonManager реализует создание кнопок из обычных MovieClip. Его реализация у меня в последнее время несколько разрослась из-за различных нужд, поэтому листинг не привожу, но в целом там происходит установка событий, buttonMode и реакция на наведения и нажатия (смена кадров). Если будет сильно интересно, то может, всё-таки, и выложу листинг.
Игровая графика так же располагается в соответствующих слоях, но об этом позже...
- +8
- elmortem
Комментарии (4)
Лично мне удобно делать интерфейсы прямо во flash ide, и в интерфейсном классе лишь обрабатывать события.
т.е. почему нельзя добавить мув из библиотеки прямо в this:
this.addChild(gui = new GuiMainmenuProto());