root/as3/Commands/src/commands/AsyncCommand.as

リビジョン 609, 1.7 kB (コミッタ: fladdict, コミット時期: 4 年 前)

--

Line 
1 package commands
2 {
3         import flash.events.EventDispatcher;
4         import flash.events.Event;
5        
6         /**
7          * 「任意の非同期処理を実行し、結果を待つ」コマンド.
8          *
9          * Executes async function call. E.G. Loader, URLLoader, etc...
10          * This Command register functions event dispacher and catch their event.
11          * After complete command, this dispaches Event.COMPLETE
12          *
13          * @usage
14          *
15          * var loader:URLLoader = new URLLoader();
16          * var command:ICommand = new AsyncCommand(loader, loader.load, [new URLRequest(url);], loader.loaderContent, Event.COMPLETE);
17          * command.addEventListener(Event.COMPLETE, _comandCompleteHandler);
18          * command.execute();
19          */
20         public class AsyncCommand extends Command
21         {
22                 protected var _eventDispatcher : EventDispatcher;
23                 protected var _eventType : String;
24                
25                 /**
26                  * @param thisObject Scpoe used as This
27                  * @param func Function for execute
28                  * @param EventDispatcher Object that dispaches functions complete event.
29                  * @param Type of Event for EventDispatcher.
30                  */
31                 public function AsyncCommand(thisObject:Object, func:Function, params:Array, eventDispatcher:EventDispatcher, eventType:String)
32                 {
33                         super(thisObject, func, params);
34                        
35                         _eventDispatcher = (eventDispatcher)? eventDispatcher : thisObject as EventDispatcher;
36                         _eventType = eventType;
37                 }
38                
39                 override public function execute():void
40                 {
41                         _eventDispatcher.addEventListener(_eventType, executeCompleteHandler);
42                         _function.apply(_thisObject, _params)
43                 }
44                
45                 protected function executeCompleteHandler( e:Event ):void
46                 {
47                         _eventDispatcher.removeEventListener(_eventType, executeCompleteHandler);
48                         this.dispatchComplete();
49                 }
50         }
51 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。