added animate view

This commit is contained in:
2014-03-05 17:14:32 +04:00
parent 5fd6fee63c
commit 57300f50f0
2 changed files with 58 additions and 0 deletions

57
haxework/gui/AnimateView.hx Executable file
View File

@@ -0,0 +1,57 @@
package haxework.gui;
import haxe.Timer;
import flash.display.Bitmap;
import flash.display.BitmapData;
import haxework.gui.SpriteView;
class AnimateView extends SpriteView {
private var bitmap:Bitmap;
public var frames(default, set):Array<BitmapData>;
public var interval(default, set):Int;
private var frame:Int;
public function new() {
super();
bitmap = new Bitmap();
frames = [];
frame = 0;
interval = 200;
content.addChild(bitmap);
changeFrame();
}
private function set_frames(value:Array<BitmapData>):Array<BitmapData> {
if (frames != value) {
frames = value;
frame = 0;
changeFrame(true);
}
return frames;
}
private function set_interval(value:Int):Int {
if (interval != value) {
interval = value;
}
return interval;
}
private function changeFrame(?forse:Bool = false):Void {
frame = ++frame % frames.length;
bitmap.bitmapData = frames[frame];
update();
if (!forse) Timer.delay(function() changeFrame(false), interval);
}
override public function update():Void {
if (contentSize && bitmap.bitmapData != null) {
width = bitmap.bitmapData.width;
height = bitmap.bitmapData.height;
}
super.update();
bitmap.x = (width - bitmap.width) / 2;
bitmap.y = (height - bitmap.height) / 2;
}
}

View File

@@ -20,6 +20,7 @@ import haxework.gui.LabelView;
import haxework.gui.ButtonView;
import haxework.gui.ToggleButtonView;
import haxework.gui.ProgressView;
import haxework.gui.AnimateView;
import haxework.gui.skin.ColorSkin;
import haxework.gui.skin.BitmapSkin;
import haxework.gui.skin.ButtonColorSkin;