チェンジセット 3422

差分発生行の前後
無視リスト:
コミット日時:
2010/02/15 19:21:34 (7 ヶ月前)
コミッタ:
yossy
ログメッセージ:

BetweenAS3: Added an overwrite like behavior.

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/BetweenAS3/trunk/CHANGES

    r3080 r3422  
    44Alpha r3022 -> HEAD 
    55-------------------- 
     6 
     7 * [r3422] Added an overwrite like behavior. 
     8 
     9    BetweenAS3 will not stop old tweens like Tweener, but gives priority to new tween's values. 
    610 
    711 * [r3080] Fix: gotoAndPlay will not affected while playing. (#107) 
  • as3/BetweenAS3/trunk/CHANGES.ja

    r3080 r3422  
    44Alpha r3022 -> HEAD 
    55-------------------- 
     6 
     7 * [r3422] オーバーライトっぽい挙動をするように変更 
     8 
     9    Tweener のように古いトゥイーンを停止はしませんが、新しいトゥイーンの値が優先されるようになりました 
    610 
    711 * [r3080] 修正: play 中の gotoAndPlay が効かない (#107) 
  • as3/BetweenAS3/trunk/src/fp10/org/libspark/betweenas3/tickers/EnterFrameTicker.as

    r3077 r3422  
    6161                 
    6262                private var _first:TickerListener = null; 
     63                private var _last:TickerListener = null; 
    6364                private var _numListeners:uint = 0; 
    6465                private var _tickerListenerPaddings:Vector.<TickerListener>; 
     
    8283                        } 
    8384                         
    84                         if (_first != null) { 
    85                                 if (_first.prevListener != null) { 
    86                                         _first.prevListener.nextListener = listener; 
    87                                         listener.prevListener = _first.prevListener; 
    88                                 } 
    89                                 listener.nextListener = _first; 
    90                                 _first.prevListener = listener; 
    91                         } 
    92                          
    93                         _first = listener; 
     85                        if (_last != null) { 
     86                                if (_last.nextListener != null) { 
     87                                        _last.nextListener.prevListener = listener; 
     88                                        listener.nextListener = _last.nextListener; 
     89                                } 
     90                                listener.prevListener = _last; 
     91                                _last.nextListener = listener; 
     92                        } 
     93                         
     94                        _last = listener; 
     95                         
     96                        if (_first == null) { 
     97                                _first = listener; 
     98                        } 
    9499                         
    95100                        ++_numListeners; 
     
    117122                                                l.prevListener = null; 
    118123                                        } 
     124                                        else { 
     125                                                _last = l.prevListener; 
     126                                        } 
    119127                                        --_numListeners; 
    120128                                } 
     
    150158                        // リスナの数を 8 の倍数になるようにパディングして 8 個ずつ一気にループさせる 
    151159                         
    152                         var t:Number = _time = getTimer() / 1000, n:uint = 8 - (_numListeners % 8), listener:TickerListener = _tickerListenerPaddings[0], l:TickerListener = _tickerListenerPaddings[n], ll:TickerListener = null; 
     160                        var t:Number = _time = getTimer() / 1000, i:int = (_numListeners / 8 + 1) | 0, n:uint = i * 8 - _numListeners, listener:TickerListener = _tickerListenerPaddings[0], l:TickerListener = _tickerListenerPaddings[n], ll:TickerListener = null; 
    153161                         
    154162                        // このようにつなぎかえることでパディングの数を変える 
     
    157165                        } 
    158166                         
    159                         while (listener.nextListener != null) { 
    160                                 if ((listener = listener.nextListener).tick(t)) { 
    161                                         if (listener.prevListener != null) { 
    162                                                 listener.prevListener.nextListener = listener.nextListener; 
    163                                         } 
    164                                         if (listener.nextListener != null) { 
    165                                                 listener.nextListener.prevListener = listener.prevListener; 
    166                                         } 
    167                                         if (listener == _first) { 
    168                                                 _first = listener.nextListener; 
    169                                         } 
    170                                         ll = listener.prevListener; 
    171                                         listener.nextListener = null; 
    172                                         listener.prevListener = null; 
    173                                         listener = ll; 
    174                                         --_numListeners; 
    175                                 } 
    176                                 if ((listener = listener.nextListener).tick(t)) { 
    177                                         if (listener.prevListener != null) { 
    178                                                 listener.prevListener.nextListener = listener.nextListener; 
    179                                         } 
    180                                         if (listener.nextListener != null) { 
    181                                                 listener.nextListener.prevListener = listener.prevListener; 
    182                                         } 
    183                                         if (listener == _first) { 
    184                                                 _first = listener.nextListener; 
    185                                         } 
    186                                         ll = listener.prevListener; 
    187                                         listener.nextListener = null; 
    188                                         listener.prevListener = null; 
    189                                         listener = ll; 
    190                                         --_numListeners; 
    191                                 } 
    192                                 if ((listener = listener.nextListener).tick(t)) { 
    193                                         if (listener.prevListener != null) { 
    194                                                 listener.prevListener.nextListener = listener.nextListener; 
    195                                         } 
    196                                         if (listener.nextListener != null) { 
    197                                                 listener.nextListener.prevListener = listener.prevListener; 
    198                                         } 
    199                                         if (listener == _first) { 
    200                                                 _first = listener.nextListener; 
    201                                         } 
    202                                         ll = listener.prevListener; 
    203                                         listener.nextListener = null; 
    204                                         listener.prevListener = null; 
    205                                         listener = ll; 
    206                                         --_numListeners; 
    207                                 } 
    208                                 if ((listener = listener.nextListener).tick(t)) { 
    209                                         if (listener.prevListener != null) { 
    210                                                 listener.prevListener.nextListener = listener.nextListener; 
    211                                         } 
    212                                         if (listener.nextListener != null) { 
    213                                                 listener.nextListener.prevListener = listener.prevListener; 
    214                                         } 
    215                                         if (listener == _first) { 
    216                                                 _first = listener.nextListener; 
    217                                         } 
    218                                         ll = listener.prevListener; 
    219                                         listener.nextListener = null; 
    220                                         listener.prevListener = null; 
    221                                         listener = ll; 
    222                                         --_numListeners; 
    223                                 } 
    224                                 if ((listener = listener.nextListener).tick(t)) { 
    225                                         if (listener.prevListener != null) { 
    226                                                 listener.prevListener.nextListener = listener.nextListener; 
    227                                         } 
    228                                         if (listener.nextListener != null) { 
    229                                                 listener.nextListener.prevListener = listener.prevListener; 
    230                                         } 
    231                                         if (listener == _first) { 
    232                                                 _first = listener.nextListener; 
    233                                         } 
    234                                         ll = listener.prevListener; 
    235                                         listener.nextListener = null; 
    236                                         listener.prevListener = null; 
    237                                         listener = ll; 
    238                                         --_numListeners; 
    239                                 } 
    240                                 if ((listener = listener.nextListener).tick(t)) { 
    241                                         if (listener.prevListener != null) { 
    242                                                 listener.prevListener.nextListener = listener.nextListener; 
    243                                         } 
    244                                         if (listener.nextListener != null) { 
    245                                                 listener.nextListener.prevListener = listener.prevListener; 
    246                                         } 
    247                                         if (listener == _first) { 
    248                                                 _first = listener.nextListener; 
    249                                         } 
    250                                         ll = listener.prevListener; 
    251                                         listener.nextListener = null; 
    252                                         listener.prevListener = null; 
    253                                         listener = ll; 
    254                                         --_numListeners; 
    255                                 } 
    256                                 if ((listener = listener.nextListener).tick(t)) { 
    257                                         if (listener.prevListener != null) { 
    258                                                 listener.prevListener.nextListener = listener.nextListener; 
    259                                         } 
    260                                         if (listener.nextListener != null) { 
    261                                                 listener.nextListener.prevListener = listener.prevListener; 
    262                                         } 
    263                                         if (listener == _first) { 
    264                                                 _first = listener.nextListener; 
    265                                         } 
    266                                         ll = listener.prevListener; 
    267                                         listener.nextListener = null; 
    268                                         listener.prevListener = null; 
    269                                         listener = ll; 
    270                                         --_numListeners; 
    271                                 } 
    272                                 if ((listener = listener.nextListener).tick(t)) { 
    273                                         if (listener.prevListener != null) { 
    274                                                 listener.prevListener.nextListener = listener.nextListener; 
    275                                         } 
    276                                         if (listener.nextListener != null) { 
    277                                                 listener.nextListener.prevListener = listener.prevListener; 
    278                                         } 
    279                                         if (listener == _first) { 
    280                                                 _first = listener.nextListener; 
     167                        while (--i >= 0) { 
     168                                if ((listener = listener.nextListener).tick(t)) { 
     169                                        if (listener.prevListener != null) { 
     170                                                listener.prevListener.nextListener = listener.nextListener; 
     171                                        } 
     172                                        if (listener.nextListener != null) { 
     173                                                listener.nextListener.prevListener = listener.prevListener; 
     174                                        } 
     175                                        if (listener == _first) { 
     176                                                _first = listener.nextListener; 
     177                                        } 
     178                                        if (listener == _last) { 
     179                                                _last = listener.prevListener; 
     180                                        } 
     181                                        ll = listener.prevListener; 
     182                                        listener.nextListener = null; 
     183                                        listener.prevListener = null; 
     184                                        listener = ll; 
     185                                        --_numListeners; 
     186                                } 
     187                                if ((listener = listener.nextListener).tick(t)) { 
     188                                        if (listener.prevListener != null) { 
     189                                                listener.prevListener.nextListener = listener.nextListener; 
     190                                        } 
     191                                        if (listener.nextListener != null) { 
     192                                                listener.nextListener.prevListener = listener.prevListener; 
     193                                        } 
     194                                        if (listener == _first) { 
     195                                                _first = listener.nextListener; 
     196                                        } 
     197                                        if (listener == _last) { 
     198                                                _last = listener.prevListener; 
     199                                        } 
     200                                        ll = listener.prevListener; 
     201                                        listener.nextListener = null; 
     202                                        listener.prevListener = null; 
     203                                        listener = ll; 
     204                                        --_numListeners; 
     205                                } 
     206                                if ((listener = listener.nextListener).tick(t)) { 
     207                                        if (listener.prevListener != null) { 
     208                                                listener.prevListener.nextListener = listener.nextListener; 
     209                                        } 
     210                                        if (listener.nextListener != null) { 
     211                                                listener.nextListener.prevListener = listener.prevListener; 
     212                                        } 
     213                                        if (listener == _first) { 
     214                                                _first = listener.nextListener; 
     215                                        } 
     216                                        if (listener == _last) { 
     217                                                _last = listener.prevListener; 
     218                                        } 
     219                                        ll = listener.prevListener; 
     220                                        listener.nextListener = null; 
     221                                        listener.prevListener = null; 
     222                                        listener = ll; 
     223                                        --_numListeners; 
     224                                } 
     225                                if ((listener = listener.nextListener).tick(t)) { 
     226                                        if (listener.prevListener != null) { 
     227                                                listener.prevListener.nextListener = listener.nextListener; 
     228                                        } 
     229                                        if (listener.nextListener != null) { 
     230                                                listener.nextListener.prevListener = listener.prevListener; 
     231                                        } 
     232                                        if (listener == _first) { 
     233                                                _first = listener.nextListener; 
     234                                        } 
     235                                        if (listener == _last) { 
     236                                                _last = listener.prevListener; 
     237                                        } 
     238                                        ll = listener.prevListener; 
     239                                        listener.nextListener = null; 
     240                                        listener.prevListener = null; 
     241                                        listener = ll; 
     242                                        --_numListeners; 
     243                                } 
     244                                if ((listener = listener.nextListener).tick(t)) { 
     245                                        if (listener.prevListener != null) { 
     246                                                listener.prevListener.nextListener = listener.nextListener; 
     247                                        } 
     248                                        if (listener.nextListener != null) { 
     249                                                listener.nextListener.prevListener = listener.prevListener; 
     250                                        } 
     251                                        if (listener == _first) { 
     252                                                _first = listener.nextListener; 
     253                                        } 
     254                                        if (listener == _last) { 
     255                                                _last = listener.prevListener; 
     256                                        } 
     257                                        ll = listener.prevListener; 
     258                                        listener.nextListener = null; 
     259                                        listener.prevListener = null; 
     260                                        listener = ll; 
     261                                        --_numListeners; 
     262                                } 
     263                                if ((listener = listener.nextListener).tick(t)) { 
     264                                        if (listener.prevListener != null) { 
     265                                                listener.prevListener.nextListener = listener.nextListener; 
     266                                        } 
     267                                        if (listener.nextListener != null) { 
     268                                                listener.nextListener.prevListener = listener.prevListener; 
     269                                        } 
     270                                        if (listener == _first) { 
     271                                                _first = listener.nextListener; 
     272                                        } 
     273                                        if (listener == _last) { 
     274                                                _last = listener.prevListener; 
     275                                        } 
     276                                        ll = listener.prevListener; 
     277                                        listener.nextListener = null; 
     278                                        listener.prevListener = null; 
     279                                        listener = ll; 
     280                                        --_numListeners; 
     281                                } 
     282                                if ((listener = listener.nextListener).tick(t)) { 
     283                                        if (listener.prevListener != null) { 
     284                                                listener.prevListener.nextListener = listener.nextListener; 
     285                                        } 
     286                                        if (listener.nextListener != null) { 
     287                                                listener.nextListener.prevListener = listener.prevListener; 
     288                                        } 
     289                                        if (listener == _first) { 
     290                                                _first = listener.nextListener; 
     291                                        } 
     292                                        if (listener == _last) { 
     293                                                _last = listener.prevListener; 
     294                                        } 
     295                                        ll = listener.prevListener; 
     296                                        listener.nextListener = null; 
     297                                        listener.prevListener = null; 
     298                                        listener = ll; 
     299                                        --_numListeners; 
     300                                } 
     301                                if ((listener = listener.nextListener).tick(t)) { 
     302                                        if (listener.prevListener != null) { 
     303                                                listener.prevListener.nextListener = listener.nextListener; 
     304                                        } 
     305                                        if (listener.nextListener != null) { 
     306                                                listener.nextListener.prevListener = listener.prevListener; 
     307                                        } 
     308                                        if (listener == _first) { 
     309                                                _first = listener.nextListener; 
     310                                        } 
     311                                        if (listener == _last) { 
     312                                                _last = listener.prevListener; 
    281313                                        } 
    282314                                        ll = listener.prevListener; 
     
    292324                                _first.prevListener = null; 
    293325                        } 
     326                        else { 
     327                                _last = null; 
     328                        } 
    294329                        l.nextListener = _tickerListenerPaddings[n + 1]; 
    295330                } 
  • as3/BetweenAS3/trunk/src/fp9/org/libspark/betweenas3/tickers/EnterFrameTicker.as

    r3078 r3422  
    6161                 
    6262                private var _first:TickerListener = null; 
     63                private var _last:TickerListener = null; 
    6364                private var _numListeners:uint = 0; 
    6465                private var _tickerListenerPaddings:Array; 
     
    8283                        } 
    8384                         
    84                         if (_first != null) { 
    85                                 if (_first.prevListener != null) { 
    86                                         _first.prevListener.nextListener = listener; 
    87                                         listener.prevListener = _first.prevListener; 
    88                                 } 
    89                                 listener.nextListener = _first; 
    90                                 _first.prevListener = listener; 
    91                         } 
    92                          
    93                         _first = listener; 
     85                        if (_last != null) { 
     86                                if (_last.nextListener != null) { 
     87                                        _last.nextListener.prevListener = listener; 
     88                                        listener.nextListener = _last.nextListener; 
     89                                } 
     90                                listener.prevListener = _last; 
     91                                _last.nextListener = listener; 
     92                        } 
     93                         
     94                        _last = listener; 
     95                         
     96                        if (_first == null) { 
     97                                _first = listener; 
     98                        } 
    9499                         
    95100                        ++_numListeners; 
     
    117122                                                l.prevListener = null; 
    118123                                        } 
     124                                        else { 
     125                                                _last = l.prevListener; 
     126                                        } 
    119127                                        --_numListeners; 
    120128                                } 
     
    150158                        // リスナの数を 8 の倍数になるようにパディングして 8 個ずつ一気にループさせる 
    151159                         
    152                         var t:Number = _time = getTimer() / 1000, n:uint = 8 - (_numListeners % 8), listener:TickerListener = _tickerListenerPaddings[0] as TickerListener, l:TickerListener = _tickerListenerPaddings[n] as TickerListener, ll:TickerListener = null; 
     160                        var t:Number = _time = getTimer() / 1000, i:int = (_numListeners / 8 + 1) | 0, n:uint = i * 8 - _numListeners, listener:TickerListener = _tickerListenerPaddings[0] as TickerListener, l:TickerListener = _tickerListenerPaddings[n] as TickerListener, ll:TickerListener = null; 
    153161                         
    154162                        // このようにつなぎかえることでパディングの数を変える 
     
    157165                        } 
    158166                         
    159                         while (listener.nextListener != null) { 
    160                                 if ((listener = listener.nextListener).tick(t)) { 
    161                                         if (listener.prevListener != null) { 
    162                                                 listener.prevListener.nextListener = listener.nextListener; 
    163                                         } 
    164                                         if (listener.nextListener != null) { 
    165                                                 listener.nextListener.prevListener = listener.prevListener; 
    166                                         } 
    167                                         if (listener == _first) { 
    168                                                 _first = listener.nextListener; 
    169                                         } 
    170                                         ll = listener.prevListener; 
    171                                         listener.nextListener = null; 
    172                                         listener.prevListener = null; 
    173                                         listener = ll; 
    174                                         --_numListeners; 
    175                                 } 
    176                                 if ((listener = listener.nextListener).tick(t)) { 
    177                                         if (listener.prevListener != null) { 
    178                                                 listener.prevListener.nextListener = listener.nextListener; 
    179                                         } 
    180                                         if (listener.nextListener != null) { 
    181                                                 listener.nextListener.prevListener = listener.prevListener; 
    182                                         } 
    183                                         if (listener == _first) { 
    184                                                 _first = listener.nextListener; 
    185                                         } 
    186                                         ll = listener.prevListener; 
    187                                         listener.nextListener = null; 
    188                                         listener.prevListener = null; 
    189                                         listener = ll; 
    190                                         --_numListeners; 
    191                                 } 
    192                                 if ((listener = listener.nextListener).tick(t)) { 
    193                                         if (listener.prevListener != null) { 
    194                                                 listener.prevListener.nextListener = listener.nextListener; 
    195                                         } 
    196                                         if (listener.nextListener != null) { 
    197                                                 listener.nextListener.prevListener = listener.prevListener; 
    198                                         } 
    199                                         if (listener == _first) { 
    200                                                 _first = listener.nextListener; 
    201                                         } 
    202                                         ll = listener.prevListener; 
    203                                         listener.nextListener = null; 
    204                                         listener.prevListener = null; 
    205                                         listener = ll; 
    206                                         --_numListeners; 
    207                                 } 
    208                                 if ((listener = listener.nextListener).tick(t)) { 
    209                                         if (listener.prevListener != null) { 
    210                                                 listener.prevListener.nextListener = listener.nextListener; 
    211                                         } 
    212                                         if (listener.nextListener != null) { 
    213                                                 listener.nextListener.prevListener = listener.prevListener; 
    214                                         } 
    215                                         if (listener == _first) { 
    216                                                 _first = listener.nextListener; 
    217                                         } 
    218                                         ll = listener.prevListener; 
    219                                         listener.nextListener = null; 
    220                                         listener.prevListener = null; 
    221                                         listener = ll; 
    222                                         --_numListeners; 
    223                                 } 
    224                                 if ((listener = listener.nextListener).tick(t)) { 
    225                                         if (listener.prevListener != null) { 
    226                                                 listener.prevListener.nextListener = listener.nextListener; 
    227                                         } 
    228                                         if (listener.nextListener != null) { 
    229                                                 listener.nextListener.prevListener = listener.prevListener; 
    230                                         } 
    231                                         if (listener == _first) { 
    232                                                 _first = listener.nextListener; 
    233                                         } 
    234                                         ll = listener.prevListener; 
    235                                         listener.nextListener = null; 
    236                                         listener.prevListener = null; 
    237                                         listener = ll; 
    238                                         --_numListeners; 
    239                                 } 
    240                                 if ((listener = listener.nextListener).tick(t)) { 
    241                                         if (listener.prevListener != null) { 
    242                                                 listener.prevListener.nextListener = listener.nextListener; 
    243                                         } 
    244                                         if (listener.nextListener != null) { 
    245                                                 listener.nextListener.prevListener = listener.prevListener; 
    246                                         } 
    247                                         if (listener == _first) { 
    248                                                 _first = listener.nextListener; 
    249                                         } 
    250                                         ll = listener.prevListener; 
    251                                         listener.nextListener = null; 
    252                                         listener.prevListener = null; 
    253                                         listener = ll; 
    254                                         --_numListeners; 
    255                                 } 
    256                                 if ((listener = listener.nextListener).tick(t)) { 
    257                                         if (listener.prevListener != null) { 
    258                                                 listener.prevListener.nextListener = listener.nextListener; 
    259                                         } 
    260                                         if (listener.nextListener != null) { 
    261                                                 listener.nextListener.prevListener = listener.prevListener; 
    262                                         } 
    263                                         if (listener == _first) { 
    264                                                 _first = listener.nextListener; 
    265                                         } 
    266                                         ll = listener.prevListener; 
    267                                         listener.nextListener = null; 
    268                                         listener.prevListener = null; 
    269                                         listener = ll; 
    270                                         --_numListeners; 
    271                                 } 
    272                                 if ((listener = listener.nextListener).tick(t)) { 
    273                                         if (listener.prevListener != null) { 
    274                                                 listener.prevListener.nextListener = listener.nextListener; 
    275                                         } 
    276                                         if (listener.nextListener != null) { 
    277                                                 listener.nextListener.prevListener = listener.prevListener; 
    278                                         } 
    279                                         if (listener == _first) { 
    280                                                 _first = listener.nextListener; 
     167                        while (--i >= 0) { 
     168                                if ((listener = listener.nextListener).tick(t)) { 
     169                                        if (listener.prevListener != null) { 
     170                                                listener.prevListener.nextListener = listener.nextListener; 
     171                                        } 
     172                                        if (listener.nextListener != null) { 
     173                                                listener.nextListener.prevListener = listener.prevListener; 
     174                                        } 
     175                                        if (listener == _first) { 
     176                                                _first = listener.nextListener; 
     177                                        } 
     178                                        if (listener == _last) { 
     179                                                _last = listener.prevListener; 
     180                                        } 
     181                                        ll = listener.prevListener; 
     182                                        listener.nextListener = null; 
     183                                        listener.prevListener = null; 
     184                                        listener = ll; 
     185                                        --_numListeners; 
     186                                } 
     187                                if ((listener = listener.nextListener).tick(t)) { 
     188                                        if (listener.prevListener != null) { 
     189                                                listener.prevListener.nextListener = listener.nextListener; 
     190                                        } 
     191                                        if (listener.nextListener != null) { 
     192                                                listener.nextListener.prevListener = listener.prevListener; 
     193                                        } 
     194                                        if (listener == _first) { 
     195                                                _first = listener.nextListener; 
     196                                        } 
     197                                        if (listener == _last) { 
     198                                                _last = listener.prevListener; 
     199                                        } 
     200                                        ll = listener.prevListener; 
     201                                        listener.nextListener = null; 
     202                                        listener.prevListener = null; 
     203                                        listener = ll; 
     204                                        --_numListeners; 
     205                                } 
     206                                if ((listener = listener.nextListener).tick(t)) { 
     207                                        if (listener.prevListener != null) { 
     208                                                listener.prevListener.nextListener = listener.nextListener; 
     209                                        } 
     210                                        if (listener.nextListener != null) { 
     211                                                listener.nextListener.prevListener = listener.prevListener; 
     212                                        } 
     213                                        if (listener == _first) { 
     214                                                _first = listener.nextListener; 
     215                                        } 
     216                                        if (listener == _last) { 
     217                                                _last = listener.prevListener; 
     218                                        } 
     219                                        ll = listener.prevListener; 
     220                                        listener.nextListener = null; 
     221                                        listener.prevListener = null; 
     222                                        listener = ll; 
     223                                        --_numListeners; 
     224                                } 
     225                                if ((listener = listener.nextListener).tick(t)) { 
     226                                        if (listener.prevListener != null) { 
     227                                                listener.prevListener.nextListener = listener.nextListener; 
     228                                        } 
     229                                        if (listener.nextListener != null) { 
     230                                                listener.nextListener.prevListener = listener.prevListener; 
     231                                        } 
     232                                        if (listener == _first) { 
     233                                                _first = listener.nextListener; 
     234                                        } 
     235                                        if (listener == _last) { 
     236                                                _last = listener.prevListener; 
     237                                        } 
     238                                        ll = listener.prevListener; 
     239                                        listener.nextListener = null; 
     240                                        listener.prevListener = null; 
     241                                        listener = ll; 
     242                                        --_numListeners; 
     243                                } 
     244                                if ((listener = listener.nextListener).tick(t)) { 
     245                                        if (listener.prevListener != null) { 
     246                                                listener.prevListener.nextListener = listener.nextListener; 
     247                                        } 
     248                                        if (listener.nextListener != null) { 
     249                                                listener.nextListener.prevListener = listener.prevListener; 
     250                                        } 
     251                                        if (listener == _first) { 
     252                                                _first = listener.nextListener; 
     253                                        } 
     254                                        if (listener == _last) { 
     255                                                _last = listener.prevListener; 
     256                                        } 
     257                                        ll = listener.prevListener; 
     258                                        listener.nextListener = null; 
     259                                        listener.prevListener = null; 
     260                                        listener = ll; 
     261                                        --_numListeners; 
     262                                } 
     263                                if ((listener = listener.nextListener).tick(t)) { 
     264                                        if (listener.prevListener != null) { 
     265                                                listener.prevListener.nextListener = listener.nextListener; 
     266                                        } 
     267                                        if (listener.nextListener != null) { 
     268                                                listener.nextListener.prevListener = listener.prevListener; 
     269                                        } 
     270                                        if (listener == _first) { 
     271                                                _first = listener.nextListener; 
     272                                        } 
     273                                        if (listener == _last) { 
     274                                                _last = listener.prevListener; 
     275                                        } 
     276                                        ll = listener.prevListener; 
     277                                        listener.nextListener = null; 
     278                                        listener.prevListener = null; 
     279                                        listener = ll; 
     280                                        --_numListeners; 
     281                                } 
     282                                if ((listener = listener.nextListener).tick(t)) { 
     283                                        if (listener.prevListener != null) { 
     284                                                listener.prevListener.nextListener = listener.nextListener; 
     285                                        } 
     286                                        if (listener.nextListener != null) { 
     287                                                listener.nextListener.prevListener = listener.prevListener; 
     288                                        } 
     289                                        if (listener == _first) { 
     290                                                _first = listener.nextListener; 
     291                                        } 
     292                                        if (listener == _last) { 
     293                                                _last = listener.prevListener; 
     294                                        } 
     295                                        ll = listener.prevListener; 
     296                                        listener.nextListener = null; 
     297                                        listener.prevListener = null; 
     298                                        listener = ll; 
     299                                        --_numListeners; 
     300                                } 
     301                                if ((listener = listener.nextListener).tick(t)) { 
     302                                        if (listener.prevListener != null) { 
     303                                                listener.prevListener.nextListener = listener.nextListener; 
     304                                        } 
     305                                        if (listener.nextListener != null) { 
     306                                                listener.nextListener.prevListener = listener.prevListener; 
     307                                        } 
     308                                        if (listener == _first) { 
     309                                                _first = listener.nextListener; 
     310                                        } 
     311                                        if (listener == _last) { 
     312                                                _last = listener.prevListener; 
    281313                                        } 
    282314                                        ll = listener.prevListener; 
     
    292324                                _first.prevListener = null; 
    293325                        } 
     326                        else { 
     327                                _last = null; 
     328                        } 
    294329                        l.nextListener = _tickerListenerPaddings[n + 1] as TickerListener; 
    295330                } 
  • as3/BetweenAS3/trunk/tests/fp10/org/libspark/betweenas3/tickers/EnterFrameTickerTest.as

    r3077 r3422  
    201201                        assertEquals(2, l8.c); 
    202202                } 
     203                 
     204                test function iterationOrder():void 
     205                { 
     206                        var l01:LoggingTickerListener = new LoggingTickerListener('A', 1); 
     207                        var l02:LoggingTickerListener = new LoggingTickerListener('B', 2); 
     208                        var l03:LoggingTickerListener = new LoggingTickerListener('C', 3); 
     209                        var l04:LoggingTickerListener = new LoggingTickerListener('D', 4); 
     210                        var l05:LoggingTickerListener = new LoggingTickerListener('E', 5); 
     211                        var l06:LoggingTickerListener = new LoggingTickerListener('F', 6); 
     212                        var l07:LoggingTickerListener = new LoggingTickerListener('G', 7); 
     213                        var l08:LoggingTickerListener = new LoggingTickerListener('H', 8); 
     214                         
     215                        var ticker:EnterFrameTicker = new EnterFrameTicker(); 
     216                         
     217                        ticker.addTickerListener(l01); 
     218                        ticker.addTickerListener(l02); 
     219                        ticker.addTickerListener(l03); 
     220                        ticker.addTickerListener(l04); 
     221                        ticker.addTickerListener(l05); 
     222                        ticker.addTickerListener(l06); 
     223                        ticker.addTickerListener(l07); 
     224                        ticker.addTickerListener(l08); 
     225                         
     226                        Static.log = ''; 
     227                         
     228                        for (var i:uint = 1; i < 10; ++i) { 
     229                                ticker.update(null); 
     230                        } 
     231                         
     232                        var log:String = ''; 
     233                        log += 'A1 B1 C1 D1 E1 F1 G1 H1 '; 
     234                        log += 'B2 C2 D2 E2 F2 G2 H2 '; 
     235                        log += 'C3 D3 E3 F3 G3 H3 '; 
     236                        log += 'D4 E4 F4 G4 H4 '; 
     237                        log += 'E5 F5 G5 H5 '; 
     238                        log += 'F6 G6 H6 '; 
     239                        log += 'G7 H7 '; 
     240                        log += 'H8 '; 
     241                         
     242                        assertEquals(log, Static.log); 
     243                } 
     244                 
     245                test function insertAfterDelete():void 
     246                { 
     247                        var ticker:EnterFrameTicker = new EnterFrameTicker(); 
     248                         
     249                        var l1:MockTickerListener = new MockTickerListener(1); 
     250                        var l2:MockTickerListener = new MockTickerListener(1); 
     251                        var l3:AddingListenerTickerListener = new AddingListenerTickerListener(2, ticker, l1, 1); 
     252                         
     253                        ticker.addTickerListener(l3); 
     254                        ticker.addTickerListener(l2); 
     255                         
     256                        ticker.update(null); 
     257                        ticker.update(null); 
     258                        ticker.update(null); 
     259                         
     260                        assertEquals(1, l1.c); 
     261                        assertEquals(1, l2.c); 
     262                        assertEquals(2, l3.c); 
     263                } 
    203264        } 
    204265} 
     
    207268import org.libspark.betweenas3.core.ticker.ITicker; 
    208269 
     270internal class Static 
     271{ 
     272        public static var log:String; 
     273} 
     274 
    209275internal class MockTickerListener extends TickerListener 
    210276{ 
     
    226292internal class AddingListenerTickerListener extends MockTickerListener 
    227293{ 
    228         public function AddingListenerTickerListener(n:uint, ticker:ITicker, listener:TickerListener
     294        public function AddingListenerTickerListener(n:uint, ticker:ITicker, listener:TickerListener, n2:uint = 0
    229295        { 
    230296                super(n); 
     
    232298                this.ticker = ticker; 
    233299                this.listener = listener; 
     300                this.n2 = n2; 
    234301        } 
    235302         
    236303        public var ticker:ITicker; 
    237304        public var listener:TickerListener; 
     305        public var n2:uint; 
    238306         
    239307        override public function tick(time:Number):Boolean 
    240308        { 
    241                 if (c == 0) { 
     309                if (c == n2) { 
    242310                        ticker.addTickerListener(listener); 
    243311                } 
     
    245313        } 
    246314} 
     315 
     316internal class LoggingTickerListener extends TickerListener 
     317{ 
     318        public function LoggingTickerListener(name:String, n:uint) 
     319        { 
     320                this.name = name; 
     321                this.n = n; 
     322                this.c = 0; 
     323        } 
     324         
     325        public var name:String; 
     326        public var n:uint; 
     327        public var c:uint; 
     328         
     329        override public function tick(time:Number):Boolean 
     330        { 
     331                ++c; 
     332                 
     333                Static.log += name + c + ' '; 
     334                 
     335                return c == n; 
     336        } 
     337} 
  • as3/BetweenAS3/trunk/tests/fp9/org/libspark/betweenas3/tickers/EnterFrameTickerTest.as

    r3078 r3422  
    201201                        assertEquals(2, l8.c); 
    202202                } 
     203                 
     204                test function iterationOrder():void 
     205                { 
     206                        var l01:LoggingTickerListener = new LoggingTickerListener('A', 1); 
     207                        var l02:LoggingTickerListener = new LoggingTickerListener('B', 2); 
     208                        var l03:LoggingTickerListener = new LoggingTickerListener('C', 3); 
     209                        var l04:LoggingTickerListener = new LoggingTickerListener('D', 4); 
     210                        var l05:LoggingTickerListener = new LoggingTickerListener('E', 5); 
     211                        var l06:LoggingTickerListener = new LoggingTickerListener('F', 6); 
     212                        var l07:LoggingTickerListener = new LoggingTickerListener('G', 7); 
     213                        var l08:LoggingTickerListener = new LoggingTickerListener('H', 8); 
     214                         
     215                        var ticker:EnterFrameTicker = new EnterFrameTicker(); 
     216                         
     217                        ticker.addTickerListener(l01); 
     218                        ticker.addTickerListener(l02); 
     219                        ticker.addTickerListener(l03); 
     220                        ticker.addTickerListener(l04); 
     221                        ticker.addTickerListener(l05); 
     222                        ticker.addTickerListener(l06); 
     223                        ticker.addTickerListener(l07); 
     224                        ticker.addTickerListener(l08); 
     225                         
     226                        Static.log = ''; 
     227                         
     228                        for (var i:uint = 1; i < 10; ++i) { 
     229                                ticker.update(null); 
     230                        } 
     231                         
     232                        var log:String = ''; 
     233                        log += 'A1 B1 C1 D1 E1 F1 G1 H1 '; 
     234                        log += 'B2 C2 D2 E2 F2 G2 H2 '; 
     235                        log += 'C3 D3 E3 F3 G3 H3 '; 
     236                        log += 'D4 E4 F4 G4 H4 '; 
     237                        log += 'E5 F5 G5 H5 '; 
     238                        log += 'F6 G6 H6 '; 
     239                        log += 'G7 H7 '; 
     240                        log += 'H8 '; 
     241                         
     242                        assertEquals(log, Static.log); 
     243                } 
     244                 
     245                test function insertAfterDelete():void 
     246                { 
     247                        var ticker:EnterFrameTicker = new EnterFrameTicker(); 
     248                         
     249                        var l1:MockTickerListener = new MockTickerListener(1); 
     250                        var l2:MockTickerListener = new MockTickerListener(1); 
     251                        var l3:AddingListenerTickerListener = new AddingListenerTickerListener(2, ticker, l1, 1); 
     252                         
     253                        ticker.addTickerListener(l3); 
     254                        ticker.addTickerListener(l2); 
     255                         
     256                        ticker.update(null); 
     257                        ticker.update(null); 
     258                        ticker.update(null); 
     259                         
     260                        assertEquals(1, l1.c); 
     261                        assertEquals(1, l2.c); 
     262                        assertEquals(2, l3.c); 
     263                } 
    203264        } 
    204265} 
     
    207268import org.libspark.betweenas3.core.ticker.ITicker; 
    208269 
     270internal class Static 
     271{ 
     272        public static var log:String; 
     273} 
     274 
    209275internal class MockTickerListener extends TickerListener 
    210276{ 
     
    226292internal class AddingListenerTickerListener extends MockTickerListener 
    227293{ 
    228         public function AddingListenerTickerListener(n:uint, ticker:ITicker, listener:TickerListener
     294        public function AddingListenerTickerListener(n:uint, ticker:ITicker, listener:TickerListener, n2:uint = 0
    229295        { 
    230296                super(n); 
     
    232298                this.ticker = ticker; 
    233299                this.listener = listener; 
     300                this.n2 = n2; 
    234301        } 
    235302         
    236303        public var ticker:ITicker; 
    237304        public var listener:TickerListener; 
     305        public var n2:uint; 
    238306         
    239307        override public function tick(time:Number):Boolean 
    240308        { 
    241                 if (c == 0) { 
     309                if (c == n2) { 
    242310                        ticker.addTickerListener(listener); 
    243311                } 
     
    245313        } 
    246314} 
     315 
     316internal class LoggingTickerListener extends TickerListener 
     317{ 
     318        public function LoggingTickerListener(name:String, n:uint) 
     319        { 
     320                this.name = name; 
     321                this.n = n; 
     322                this.c = 0; 
     323        } 
     324         
     325        public var name:String; 
     326        public var n:uint; 
     327        public var c:uint; 
     328         
     329        override public function tick(time:Number):Boolean 
     330        { 
     331                ++c; 
     332                 
     333                Static.log += name + c + ' '; 
     334                 
     335                return c == n; 
     336        } 
     337}