From 57300f50f06142028c5fe3d26bc35a95d40ee9a1 Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 5 Mar 2014 17:14:32 +0400 Subject: [PATCH] added animate view --- haxework/gui/AnimateView.hx | 57 +++++++++++++++++++++++++++++++++++++ haxework/gui/GuiBuilder.hx | 1 + 2 files changed, 58 insertions(+) create mode 100755 haxework/gui/AnimateView.hx diff --git a/haxework/gui/AnimateView.hx b/haxework/gui/AnimateView.hx new file mode 100755 index 0000000..a524d16 --- /dev/null +++ b/haxework/gui/AnimateView.hx @@ -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; + 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):Array { + 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; + } +} \ No newline at end of file diff --git a/haxework/gui/GuiBuilder.hx b/haxework/gui/GuiBuilder.hx index 6fb2183..189329a 100755 --- a/haxework/gui/GuiBuilder.hx +++ b/haxework/gui/GuiBuilder.hx @@ -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;