- 2010-02-18 (木) 3:01
- Flash
KTween – 軽量AS3用Tweenエンジンを公開! http://kawa.at.webry.info/201002/article_2.html
半日でフルスクラッチって、どんだけー。すごすぎ(>_<)
ダウンロードはこちら → http://code.google.com/p/kawanet/
Progression4 で使ってみたかったのでCommand化してました。
DoKTween.as
// DoKTween package { // nium import jp.nium.utils.ObjectUtil; // progression import jp.progression.commands.Command; import jp.progression.events.ExecuteEvent; // KTween import net.kawa.tween.KTween; import net.kawa.tween.easing.*; import net.kawa.tween.KTJob; /** * */ public class DoKTween extends Command { public function get target():Object { return _target; } public function set target( value:Object ):void { _target = value; } private var _target:Object; private var _job:KTJob; public function get duration():Number { return _duration; } public function set duration( value:Number ):void { _duration = value; } private var _duration:Number; public function get parameters():Object { return _parameters; } public function set parameters( value:Object ):void { _parameters = value; } private var _parameters:Object; public function get easeing():Function { return _easeing; } public function set easeing( value:Function ):void { _easeing = value; } private var _easeing:Function; public function get onUpdate():Function { return _onUpdate; } public function set onUpdate( value:Function ):void { _onUpdate = value; } private var _onUpdate:Function; private var _originalParameters:Object; /** * 新しい DoKTween インスタンスを作成します。 */ public function DoKTween( target:Object, duration:Number, parameters:Object, easeing:Function, initObject:Object = null ) { // 引数を設定する _target = target; _duration = duration; _parameters = parameters || { }; _easeing = easeing; // 親クラスを初期化します。 super( _executeFunction, _interruptFunction, initObject ); } /** * 破棄します。 */ private function _destroy():void { // 破棄する _job = null; _target = null; _easeing = null; _parameters = null; } /** * 実行されるコマンドの実装です。 */ private function _executeFunction():void { // 実行する _job = KTween.to( _target, _duration, _parameters, _easeing ); _job.onComplete = _complete; _job.onChange = _update; } /** * */ private function _complete():void { // 破棄する _destroy(); // 処理を終了する super.executeComplete(); } /** * */ private function _update():void { // イベントを送出する super.dispatchEvent( new ExecuteEvent( ExecuteEvent.EXECUTE_UPDATE, false, false, this ) ); // イベントハンドラメソッドを実行する if ( _onUpdate != null ) { _onUpdate.apply( scope || this ); } } /** * */ private function _error( errorScope:Object, metaError:Error ):void { errorScope; // 破棄する _destroy(); // 例外をスローする super.throwError( this, metaError ); } /** * 中断されるコマンドの実装です。 */ private function _interruptFunction():void { // 実行時間を 0 にする _duration = 0; // 中断する & 中断方法によって処理を振り分ける try { switch ( super.interruptType ) { case 0 : { _job.cancel(); break; } case 1 : { _job.abort(); break; } case 2 : { _job.complete(); break; } } } catch ( e:Error ) {} // 破棄する _destroy(); } /** * インスタンスのコピーを作成して、各プロパティの値を元のプロパティの値と一致するように設定します。 */ public override function clone():Command { return new DoKTween( _target, _duration, _parameters, _easeing, this ); } /* * toString */ override public function toString():String { return ObjectUtil.formatToString( this, super.className, super.id ? "id" : null, "target" ); } } } |
使う時はこんな感じ
// easing import net.kawa.tween.easing.*; // 中略 //DoKTween(target:Object, duration:Number, parameters:Object, ease:Function = null ,initObject:Object = null) var com:DoKTween = new DoKTween( targetObj, 1, { x : 300 }, Back.easeIn ); com.execute(); |
勢いで作ってみたんで、突っ込みあったらコメントしてもらえるとうれしいです。
- Newer: actionscript3.0 で カルーセル
- Older: FlashDevelop のコードカラーリング
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.atama-switch.net/wp-trackback.php?p=225
- Listed below are links to weblogs that reference
- Progression4 で KTween from BLOG atama-switch