因為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年啦,在這邊跟大家補個新年快樂~~~
沒有留言:
張貼留言