チェンジセット 802

差分発生行の前後
無視リスト:
コミット日時:
2008/07/09 14:48:37 (4 ヶ月前)
コミッタ:
yossy
ログメッセージ:

Thread: TweenerThread? で連続したトゥイーンを実行できるよう改良

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/Thread/trunk/src/org/libspark/thread/threads/tweener/TweenerThread.as

    r641 r802  
    5555                 *  
    5656                 * @param       target  Tweener に渡す、トゥイーンのターゲット 
    57                  * @param       args    Tweener に渡す、トゥイーンの引数 
     57                 * @param       args    Tweener に渡す、トゥイーンの引数。複数渡すと、全てを連続して実行します 
    5858                 */ 
    59                 public function TweenerThread(target:Object, args:Object
     59                public function TweenerThread(target:Object, ...args:Array
    6060                { 
    6161                        _target = target; 
    6262                        _args = args; 
    63                         _specialArgs = splitSpecialArgs(args); 
    6463                        _startTime = 0; 
    6564                        _monitor = new Monitor(); 
    66                          
    67                         args.onComplete = completeHandler; 
    6865                } 
    6966                 
    7067                private var _target:Object; 
    71                 private var _args:Object
     68                private var _args:Array
    7269                private var _specialArgs:Object; 
    7370                private var _startTime:uint; 
     
    123120                override protected function run():void 
    124121                { 
     122                        if (_args.length == 0) { 
     123                                return; 
     124                        } 
     125                         
     126                        _startTime = getTimer(); 
     127                         
     128                        _monitor.wait(); 
     129                        interrupted(interruptedHandler); 
     130                         
     131                        nextTween(); 
     132                } 
     133                 
     134                private function nextTween():void 
     135                { 
     136                        if (_args.length == 0) { 
     137                                _monitor.notifyAll(); 
     138                                return; 
     139                        } 
     140                         
     141                        var a:Object = _args.shift(); 
     142                         
     143                        _specialArgs = splitSpecialArgs(a); 
     144                         
     145                        a.onComplete = completeHandler; 
     146                         
    125147                        if ('show' in _specialArgs && _specialArgs.show) { 
    126148                                if (_target is DisplayObject) { 
     
    134156                        } 
    135157                         
    136                         _startTime = getTimer(); 
    137                          
    138                         Tweener.addTween(_target, _args); 
    139                          
    140                         waitTween(); 
    141                 } 
    142                  
    143                 /** 
    144                  * @private 
    145                  */ 
    146                 private function waitTween():void 
    147                 { 
    148                         _monitor.wait(); 
    149                         interrupted(interruptedHandler); 
     158                        Tweener.addTween(_target, a); 
    150159                } 
    151160                 
     
    166175                        } 
    167176                         
    168                         _monitor.notifyAll(); 
     177                        nextTween(); 
    169178                } 
    170179