Tweener.registerSpecialPropertySplitter(1)
2008/01/11 23:41 - tweener
数値型のプロパティなら何でもトゥイーンすることができる Tweener。
それは、現在の状態から到達値の状態へと、以下のプロセスを繰り返すことで実現するのはご承知のとおり。
- var val:Number = Object.property で現在値を取得
- val を次の値に計算
- Object.property = val で値を更新
しかしプロパティの中には、以上の処理の繰り返しだけではトゥイーンにならないものも存在します。
これから数回、やはり上記トゥイーンループ処理におけるプロパティ操作に関わるメソッド registerSpecialPropertySplitter についてエントリーしてきます。
まずは概略から。
繰り返しますが、registerSpecialProperty は Object.property = val だけではトゥイーンを反映しないプロパティに対し、事後処理や事前処理を陰でおこなうことで Object.property = val だけでトゥイーンをしているかのように見せるメソッドです。
一方、registerSpecialPropertySplitter は、仮想のプロパティを設定することで、複数のプロパティをひとつの Object.property = val でトゥイーンをしているかのように見せるメソッドです。 そのために陰でおこなう処理はトゥイーン数値の分割やプロパティへの配分です。
公式の各クラスをつぶさに見ると、registerSpecialPropertySplitter では、現在のところ次の3パターンの使い方がなされています。
- 単一のトゥイーン数値を複数のプロパティに適用
- 単一のトゥイーン数値を分割し、複数のプロパティに適用
- 到達値に、数値ではなくオブジェクトを指定してトゥイーン
それぞれ以下のようになっています。
単一のトゥイーン数値を複数のプロパティに適用
DisplayShortcuts の _scale がこれに該当します。
_scale は単一数値で scaleX と scaleY 両方のトゥイーンをおこないます。
単一のトゥイーン数値を分割し、複数のプロパティに適用
これは色に関わるトゥイーンです。
addTween において、トゥイーン到達値には、24Bit カラー値 0xRRGGBB が指定されています。 トゥイーンループ中は各色要素 0xRR、0xGG、0xBB に分解され、各色要素ごとにトゥイーンがおこなわれます。
ColorShortcuts、FilterShortcuts、TextShortcuts で色を扱う特殊プロパティが該当します。
到達値に、数値ではなくオブジェクトを指定してトゥイーン
以下の特殊プロパティがこれに該当します。
- ColorShortcuts の _color と _colorTransform
- DisplayShortcuts の _scrollRect
- FilterShortcuts の _filter と _ColorMatrix_matrix
上記の色要素トゥイーンはひとつの数値を分解するものでした。
このパターンはトゥイーン到達値に数値ではなくオブジェクトを指定します。
例えば、_scrollRect の場合は Rectangle オブジェクト、_filter の場合は BitmapFilter オブジェクト、など。
そしてトゥイーンループ中に各オブジェクトのプロパティが取り出され、そのプロパティごとにトゥイーンがおこなわれます。
シリーズ
- Tweener.registerSpecialPropertySplitter(6)
- Tweener.registerSpecialPropertySplitter(5)
- Tweener.registerSpecialPropertySplitter(4)
- Tweener.registerSpecialPropertySplitter(3)
- Tweener.registerSpecialPropertySplitter(2)
関連シリーズ
- Tweener.registerSpecialProperty(6)
- Tweener.registerSpecialProperty(5)
- Tweener.registerSpecialProperty(4)
- Tweener.registerSpecialProperty(3)
- Tweener.registerSpecialProperty(2)
- Tweener.registerSpecialProperty(1)