added frameswicther

This commit is contained in:
2013-11-13 17:41:26 +04:00
parent 971fce0904
commit 79ae986e91
4 changed files with 51 additions and 0 deletions

39
haxework/frame/FrameSwitcher.hx Executable file
View File

@@ -0,0 +1,39 @@
package haxework.frame;
import flash.display.Sprite;
import haxework.gui.IView;
import haxework.gui.GroupView;
class FrameSwitcher extends GroupView implements IFrameSwitcher<Sprite> {
public var current(default, null):Null<IView<Sprite>>;
private var frames:Map<String, IView<Sprite>>;
public function new() {
super();
frames = new Map<String, IView<Sprite>>();
current = null;
}
public function change(id:String):IView<Sprite> {
if (current != null) {
if (current.id == id) return current;
removeView(current);
}
current = frames.get(id);
addView(current);
return current;
}
override public function set_views(value:Array<IView<Sprite>>):Array<IView<Sprite>> {
views = [];
if (value.length > 0) {
for (view in value) {
view.pWidth = 100;
view.pHeight = 100;
frames.set(view.id, view);
}
}
return value;
}
}

View File

@@ -0,0 +1,8 @@
package haxework.frame;
import haxework.gui.IView;
interface IFrameSwitcher<C> extends IView<C> {
public var current(default, null):Null<IView<C>>;
public function change(id:String):IView<C>;
}

View File

@@ -51,6 +51,7 @@ class GroupView extends View implements IGroupView<Sprite> {
viewsById.set(view.id, view);
content.addChild(view.content);
view.parent = this;
invalidate();
return view;
}
@@ -59,6 +60,7 @@ class GroupView extends View implements IGroupView<Sprite> {
viewsById.remove(view.id);
views.remove(view);
content.removeChild(view.content);
invalidate();
return view;
}

View File

@@ -12,6 +12,8 @@ import haxework.gui.ButtonView;
import haxework.gui.skin.ColorSkin;
import haxework.gui.skin.ButtonColorSkin;
import haxework.frame.FrameSwitcher;
class GuiBuilder {
private function new() {}