因為CJcat的文章已經對原理有完整的介紹了,所以我就不在這方面有其他的琢磨了,就直接介紹如何使。
Commands
Commands,我主要是把它當作一個容器,可以存放多個命令,讓命令依序/同時進行,使用方式有addCommand、setCommand,建議只使用addCommand就可以了。
/**
* @param ... $Commands 加入的命令必須是 commands 或是 array 所包覆之 function 或 commands
**/
addCommand( ... $Commands);
//example
addCommand(
function():void{trace("step1");},
[function():void{trace("step2-1");},
function():void{trace("step2-2"); ],
function():void{trace("step3")}
);
其中用"[...]"(array)包起來的動作,是同時執行的(並聯);其他的則是串聯(一個結束後,接續下一個)的執行方式,下面就是完整的範例程式碼。import gquery.command.Commands;
import gquery.command.DoNomalCommand;
import gquery.command.DoTweenNanoTo;
import gquery.events.CommandEvent;
var cast1 = new Sprite();
var cast2 = new Sprite();
cast1.graphic.beginFill( 0x000000 );
cast1.graphics.drawRect(0, 0, 100, 100);
cast1.graphics.endFill();
cast2.graphic.beginFill( 0x000000 );
cast2.graphics.drawRect(0, 0, 100, 100);
cast2.graphics.endFill();
cast2.y = 110;
addChild( cast1 );
addChild( cast2 );
var com:Commands = new Commands();
//為com加上監聽器,在com執行完畢的時候觸發
com.addEventListener(CommandEvent.COMPLETE , onCommandCompleteHandle);
com.addCommand(
new DoTweenNanoTo( cast1 , 1 , {x:100} ),
new DoTweenNanoTo( cast2 , 1 , {alpha:0} ),
[new DoTweenNanoTo( cast1 , 1 , {x:0} ),
new DoTweenNanoTo( cast2 , 1 , {alpha:1} )]
);
//開始執行 com
com.execute();
function onCommandCompleteHandle(e:CommandEvent):void
{
//這邊可以做command完成後的動作
trace("com 執行完畢");
}
下面來介紹幾個command的用法:
DoTweenNanoTo
DoTweenMaxTo
相信大家看到這個都覺得很眼熟, 這是使用greensock的Tween libs所建立的,所以他的使用方式也跟原本的差不多。
ps.如果要同時對同一個物件使用這Class的話,可能會有tween overwrite的問題需要注意一下
DoTweenNanoTo( $target:DisplayObject , $duration:Number , $vars:Object ); DoTweenMaxTo( $target:DisplayObject , $duration:Number , $vars:Object );
DoFrameCommand
/** * @param $target 目標 * @param $startFrame 開始影格(int or FrameLabel) * @param $EndFrame 結束影格(int or FrameLabel) */ DoFrameCommand($target:MovieClip , $startFrame:* , $EndFrame:* )
DoNormalCommand
/** * 建立命令容器實體 * @param $function 要執行的Function * @param $delay 要延遲秒數 */ DoNomalCommand($function:Function , $delay:Number = 0)
到這邊,就是目前整理出來比較完整的部分了,希望能對大家有些許的幫助。
參考網址:CJ's Blog Thinking in Commands
範例檔案: 點我下載 (libs也包進去了)
在這邊囉嗦一下,其實再發這篇文章的時候內新是挺掙扎的,畢竟這個libs說起來也不難,只是一個簡單的小概念;比起cjcat的詳細介紹,覺得自己寫這篇沒甚麼意義;最後決定還是要寫,一方面是記錄,另外也是學習著寫自己的libs,不過在文章內容上就偏向使用方面去介紹,就不再解說相關的概念。
最後希望大家再使用方面如果有遇到什麼bug可以跟我說一下,也期許自己能夠繼續進步,最後2011年啦,在這邊跟大家補個新年快樂~~~
沒有留言:
張貼留言