view refactored
This commit is contained in:
@@ -6,16 +6,16 @@ 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 var current(default, null):Null<IView<Dynamic>>;
|
||||
private var frames:Map<String, IView<Dynamic>>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
frames = new Map<String, IView<Sprite>>();
|
||||
frames = new Map<String, IView<Dynamic>>();
|
||||
current = null;
|
||||
}
|
||||
|
||||
public function change(id:String):IView<Sprite> {
|
||||
public function change(id:String):IView<Dynamic> {
|
||||
if (current != null) {
|
||||
if (current.id == id) return current;
|
||||
removeView(current);
|
||||
@@ -25,7 +25,7 @@ class FrameSwitcher extends GroupView implements IFrameSwitcher<Sprite> {
|
||||
return current;
|
||||
}
|
||||
|
||||
override public function set_views(value:Array<IView<Sprite>>):Array<IView<Sprite>> {
|
||||
override public function set_views(value:Array<IView<Dynamic>>):Array<IView<Dynamic>> {
|
||||
views = [];
|
||||
if (value.length > 0) {
|
||||
for (view in value) {
|
||||
|
||||
@@ -2,7 +2,7 @@ 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>;
|
||||
interface IFrameSwitcher<C:Content> extends IView<C> {
|
||||
public var current(default, null):Null<IView<Dynamic>>;
|
||||
public function change(id:String):IView<Dynamic>;
|
||||
}
|
||||
@@ -6,9 +6,9 @@ import haxework.gui.layout.DefaultLayout;
|
||||
import haxework.gui.layout.ILayout;
|
||||
import flash.display.Sprite;
|
||||
|
||||
class GroupView extends View implements IGroupView<Sprite> {
|
||||
class GroupView extends SpriteView implements IGroupView<Sprite> {
|
||||
|
||||
public var views(default, set):Array<IView<Sprite>>;
|
||||
public var views(default, set):Array<IView<Dynamic>>;
|
||||
public var layout(default, default):ILayout;
|
||||
|
||||
public var layoutVAlign(default, set):VAlign;
|
||||
@@ -21,7 +21,7 @@ class GroupView extends View implements IGroupView<Sprite> {
|
||||
public var bottomPadding(default, set):Float;
|
||||
public var paddings(null, set):Float;
|
||||
|
||||
private var viewsById:Map<String, IView<Sprite>>;
|
||||
private var viewsById:Map<String, IView<Dynamic>>;
|
||||
|
||||
public function new(?layout:ILayout) {
|
||||
super();
|
||||
@@ -40,13 +40,13 @@ class GroupView extends View implements IGroupView<Sprite> {
|
||||
super.update();
|
||||
}
|
||||
|
||||
public function set_views(value:Array<IView<Sprite>>):Array<IView<Sprite>> {
|
||||
public function set_views(value:Array<IView<Dynamic>>):Array<IView<Dynamic>> {
|
||||
if (views == null) views = [];
|
||||
for (view in value) addView(view);
|
||||
return views;
|
||||
}
|
||||
|
||||
public function addView(view:IView<Sprite>):IView<Sprite> {
|
||||
public function addView(view:IView<Dynamic>):IView<Dynamic> {
|
||||
views.push(view);
|
||||
viewsById.set(view.id, view);
|
||||
content.addChild(view.content);
|
||||
@@ -55,7 +55,7 @@ class GroupView extends View implements IGroupView<Sprite> {
|
||||
return view;
|
||||
}
|
||||
|
||||
public function removeView(view:IView<Sprite>):IView<Sprite> {
|
||||
public function removeView(view:IView<Dynamic>):IView<Dynamic> {
|
||||
view.parent = null;
|
||||
viewsById.remove(view.id);
|
||||
views.remove(view);
|
||||
@@ -64,7 +64,7 @@ class GroupView extends View implements IGroupView<Sprite> {
|
||||
return view;
|
||||
}
|
||||
|
||||
public function removeViewById(id:String):IView<Sprite> {
|
||||
public function removeViewById(id:String):IView<Dynamic> {
|
||||
if (viewsById.exists(id)) {
|
||||
return removeView(viewsById.get(id));
|
||||
} else {
|
||||
|
||||
@@ -5,6 +5,8 @@ package haxework.gui;
|
||||
import haxework.resources.IResources;
|
||||
import haxework.provider.Provider;
|
||||
import haxework.gui.View;
|
||||
import haxework.gui.SpriteView;
|
||||
import haxework.gui.MovieView;
|
||||
import haxework.gui.GroupView;
|
||||
import haxework.gui.HGroupView;
|
||||
import haxework.gui.VGroupView;
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
package haxework.gui;
|
||||
|
||||
import haxework.gui.IView.Content;
|
||||
import haxework.gui.core.HAlign;
|
||||
import haxework.gui.core.VAlign;
|
||||
import haxework.gui.layout.ILayout;
|
||||
|
||||
interface IGroupView<C> extends IView<C> {
|
||||
interface IGroupView<C:Content> extends IView<C> {
|
||||
|
||||
public var views(default, null):Array<IView<C>>;
|
||||
public var views(default, null):Array<IView<Dynamic>>;
|
||||
public var layout(default, default):ILayout;
|
||||
|
||||
public var layoutVAlign(default, set):VAlign;
|
||||
@@ -19,8 +20,8 @@ interface IGroupView<C> extends IView<C> {
|
||||
public var bottomPadding(default, set):Float;
|
||||
public var paddings(null, set):Float;
|
||||
|
||||
public function addView(view:IView<C>):IView<C>;
|
||||
public function removeView(view:IView<C>):IView<C>;
|
||||
public function removeViewById(id:String):IView<C>;
|
||||
public function addView(view:IView<Dynamic>):IView<Dynamic>;
|
||||
public function removeView(view:IView<Dynamic>):IView<Dynamic>;
|
||||
public function removeViewById(id:String):IView<Dynamic>;
|
||||
public function findViewById<V:IView<Dynamic>>(id:String, ?clazz:Class<V>):Null<V>;
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
package haxework.gui;
|
||||
|
||||
import haxework.gui.IView.Content;
|
||||
import flash.text.TextFormatAlign;
|
||||
|
||||
interface ITextView<C, T> extends IView<C> {
|
||||
interface ITextView<C:Content, T> extends IView<C> {
|
||||
public var textField(default, null):T;
|
||||
public var text(default, set):String;
|
||||
public var align(default, set):TextFormatAlign;
|
||||
|
||||
@@ -5,7 +5,12 @@ import haxework.gui.core.HAlign;
|
||||
import haxework.gui.skin.ISkin;
|
||||
import haxework.gui.core.SizeType;
|
||||
|
||||
interface IView<C> {
|
||||
typedef Content = {
|
||||
var x:Float;
|
||||
var y:Float;
|
||||
}
|
||||
|
||||
interface IView<C:Content> {
|
||||
public var id(default, null):String;
|
||||
|
||||
public var x(default, set):Float;
|
||||
@@ -37,7 +42,7 @@ interface IView<C> {
|
||||
public var content(default, null):C;
|
||||
public var skin(default, set):ISkin<C, IView<C>>;
|
||||
|
||||
public var parent(default, null):Null<IView<C>>;
|
||||
public var parent(default, null):Null<IView<Dynamic>>;
|
||||
public var inLayout(default, set):Bool;
|
||||
|
||||
public function update():Void;
|
||||
|
||||
26
haxework/gui/MovieView.hx
Executable file
26
haxework/gui/MovieView.hx
Executable file
@@ -0,0 +1,26 @@
|
||||
package haxework.gui;
|
||||
|
||||
import flash.display.MovieClip;
|
||||
|
||||
class MovieView extends View<MovieClip> {
|
||||
|
||||
public var movie(get, set):MovieClip;
|
||||
|
||||
public function new(movie:MovieClip) {
|
||||
super(movie);
|
||||
}
|
||||
|
||||
private function get_movie():MovieClip {
|
||||
return content;
|
||||
}
|
||||
|
||||
private function set_movie(value:MovieClip):MovieClip {
|
||||
content = value;
|
||||
if (contentSize) {
|
||||
width = value.loaderInfo.width;
|
||||
height = value.loaderInfo.height;
|
||||
}
|
||||
invalidate();
|
||||
return content;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package haxework.gui;
|
||||
|
||||
class ProgressView extends View {
|
||||
class ProgressView extends SpriteView {
|
||||
|
||||
public var value(default, set):Int;
|
||||
public var max(default, set):Int;
|
||||
|
||||
10
haxework/gui/SpriteView.hx
Executable file
10
haxework/gui/SpriteView.hx
Executable file
@@ -0,0 +1,10 @@
|
||||
package haxework.gui;
|
||||
|
||||
import flash.display.Sprite;
|
||||
|
||||
class SpriteView extends View<Sprite> {
|
||||
|
||||
public function new() {
|
||||
super(new Sprite());
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import flash.text.TextFormat;
|
||||
import flash.display.Sprite;
|
||||
import flash.text.TextField;
|
||||
|
||||
class TextView extends View implements ITextView<Sprite, TextField> {
|
||||
class TextView extends SpriteView implements ITextView<Sprite, TextField> {
|
||||
|
||||
public var textField(default, null):TextField;
|
||||
public var text(default, set):String;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package haxework.gui;
|
||||
|
||||
import haxework.gui.IView.Content;
|
||||
import haxework.gui.skin.ISize;
|
||||
import haxework.gui.core.SizeType;
|
||||
import haxework.gui.core.HAlign;
|
||||
@@ -11,7 +12,7 @@ import haxework.gui.skin.ISkin;
|
||||
|
||||
import flash.display.Sprite;
|
||||
|
||||
class View implements IView<Sprite> {
|
||||
class View<C:Content> implements IView<C> {
|
||||
|
||||
private static var counter:Int = 0;
|
||||
public static var updater(default, null):Updater = new Updater();
|
||||
@@ -44,16 +45,15 @@ class View implements IView<Sprite> {
|
||||
public var bottomMargin(default, set):Float;
|
||||
public var margins(null, set):Float;
|
||||
|
||||
public var content(default, null):Sprite;
|
||||
public var skin(default, set):ISkin<Sprite, IView<Sprite>>;
|
||||
public var content(default, null):C;
|
||||
public var skin(default, set):ISkin<C, IView<C>>;
|
||||
|
||||
public var parent(default, null):Null<IView<Sprite>>;
|
||||
public var parent(default, null):Null<IView<Dynamic>>;
|
||||
public var inLayout(default, set):Bool;
|
||||
|
||||
public function new() {
|
||||
public function new(content:C) {
|
||||
id = Type.getClassName(Type.getClass(this)) + counter++;
|
||||
content = new Sprite();
|
||||
skin = new FakeSkin();
|
||||
this.content = content;
|
||||
x = 0;
|
||||
y = 0;
|
||||
width = 100;
|
||||
@@ -64,7 +64,7 @@ class View implements IView<Sprite> {
|
||||
inLayout = true;
|
||||
}
|
||||
|
||||
private function currentSkin():ISkin<Sprite, IView<Sprite>> {
|
||||
private function currentSkin():ISkin<C, IView<C>> {
|
||||
return skin;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,8 @@ class View implements IView<Sprite> {
|
||||
if (!Math.isNaN(size.width)) width = size.width;
|
||||
if (!Math.isNaN(size.height)) height = size.height;
|
||||
}
|
||||
currentSkin().draw(this);
|
||||
var skin:ISkin<C, IView<C>> = currentSkin();
|
||||
if (skin != null) skin.draw(this);
|
||||
}
|
||||
|
||||
private function set_x(value:Float):Float {
|
||||
@@ -236,7 +237,7 @@ class View implements IView<Sprite> {
|
||||
return value;
|
||||
}
|
||||
|
||||
private function set_skin(value:ISkin<Sprite, IView<Sprite>>):ISkin<Sprite, IView<Sprite>> {
|
||||
private function set_skin(value:ISkin<C, IView<C>>):ISkin<C, IView<C>> {
|
||||
skin = value;
|
||||
invalidate();
|
||||
return skin;
|
||||
@@ -255,7 +256,7 @@ class View implements IView<Sprite> {
|
||||
class Updater {
|
||||
|
||||
public var stage(null, set):Stage;
|
||||
private var invalidated:Array<IView<Sprite>>;
|
||||
private var invalidated:Array<IView<Dynamic>>;
|
||||
|
||||
public function new() {
|
||||
invalidated = [];
|
||||
@@ -266,7 +267,7 @@ class Updater {
|
||||
return value;
|
||||
}
|
||||
|
||||
public function invalidate(view:IView<Sprite>):Void {
|
||||
public function invalidate(view:IView<Dynamic>):Void {
|
||||
invalidated.push(view);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import haxework.gui.core.HAlign;
|
||||
import flash.display.Sprite;
|
||||
import haxework.gui.skin.ISkin;
|
||||
|
||||
class ListView<V:View, D> extends VGroupView {
|
||||
class ListView<V:View<Dynamic>, D> extends VGroupView {
|
||||
|
||||
public var data(default, set):Array<D>;
|
||||
public var renderer(null, set):IRenderer<V, D>;
|
||||
|
||||
@@ -5,7 +5,7 @@ import flash.display.Sprite;
|
||||
import haxework.gui.skin.ISkin;
|
||||
import haxework.gui.View;
|
||||
|
||||
class ScrollView extends View {
|
||||
class ScrollView extends SpriteView {
|
||||
|
||||
public var position(default, set):Float;
|
||||
public var ratio(default, set):Float;
|
||||
|
||||
@@ -8,7 +8,7 @@ class ColorSkin implements ISkin<Sprite, IView<Sprite>> {
|
||||
public var color(default, default):Int;
|
||||
public var alpha(default, default):Float;
|
||||
|
||||
public function new(?color:Int = 0xfffff, ?alpha:Float = 1.0) {
|
||||
public function new(?color:Int = 0x000000, ?alpha:Float = 1.0) {
|
||||
this.color = color;
|
||||
this.alpha = alpha;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package haxework.gui.skin;
|
||||
|
||||
interface ISkin<C, V:IView<C>> {
|
||||
import haxework.gui.IView.Content;
|
||||
|
||||
interface ISkin<C:Content, V:IView<C>> {
|
||||
public function draw(view:V):Void;
|
||||
}
|
||||
6
haxework/net/manage/ILoaderManager.hx
Executable file
6
haxework/net/manage/ILoaderManager.hx
Executable file
@@ -0,0 +1,6 @@
|
||||
package haxework.net.manage;
|
||||
|
||||
interface ILoaderManager {
|
||||
public function add(loader:ILoader<Dynamic>):Void;
|
||||
public function release(loader:ILoader<Dynamic>):Void;
|
||||
}
|
||||
26
haxework/net/manage/LoaderManager.hx
Executable file
26
haxework/net/manage/LoaderManager.hx
Executable file
@@ -0,0 +1,26 @@
|
||||
package haxework.net.manage;
|
||||
|
||||
import haxe.ds.ObjectMap;
|
||||
|
||||
class LoaderManager implements ILoaderManager {
|
||||
|
||||
private var queue:Array<ILoader<Dynamic>>;
|
||||
private var actives:Array<ILoader<Dynamic>>;
|
||||
private var limit:Int;
|
||||
private var timeout:Map<Dynamic, Int>;
|
||||
|
||||
public function new() {
|
||||
queue = new Array<ILoader<Dynamic>>();
|
||||
actives = new Array<ILoader<Dynamic>>();
|
||||
limit = 10;
|
||||
timeout = new ObjectMap<Dynamic, Int>();
|
||||
}
|
||||
|
||||
public function add(loader:ILoader<Dynamic>):Void {
|
||||
|
||||
}
|
||||
|
||||
public function release(loader:ILoader<Dynamic>):Void {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package haxework.resources;
|
||||
|
||||
import flash.display.MovieClip;
|
||||
import haxework.resources.Resources.ResMap;
|
||||
import flash.display.BitmapData;
|
||||
|
||||
interface IResources {
|
||||
public var image(default, null):ResMap<BitmapData>;
|
||||
public var color(default, null):ResMap<Int>;
|
||||
public var movie(default, null):ResMap<MovieClip>;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package haxework.resources;
|
||||
|
||||
import flash.display.MovieClip;
|
||||
import haxework.core.Tuple;
|
||||
import haxe.ds.StringMap;
|
||||
import flash.display.BitmapData;
|
||||
@@ -47,9 +48,11 @@ class Resources implements IResources {
|
||||
|
||||
public var image(default, null):ResMap<BitmapData>;
|
||||
public var color(default, null):ResMap<Int>;
|
||||
public var movie(default, null):ResMap<MovieClip>;
|
||||
|
||||
public function new() {
|
||||
image = new ResMap<BitmapData>();
|
||||
color = new ResMap<Int>();
|
||||
movie = new ResMap<MovieClip>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user