Tweener.registerSpecialPropertySplitter(3)
2008/01/14 21:11 - tweener
前回は registerSpecialPropertySplitter と splitFunction の構文を見ました。
今回は splitFunction について見ていきます。
splitFunction 内でおこなわれる処理は、前々回説明した registerSpecialPropertySplitter の3つのパターンごとに多少異なります。
まずは基本形。
単一のトゥイーン数値を複数のプロパティに適用
- ローカル配列を生成する
- 配列へオブジェクト型データを push する
- push が完了した配列を return する
2. の配列に push するオブジェクト型データのフォーマットは以下のとおりです。
{ name:"プロパティ名" , value:トゥイーン中の数値 }
name キーのバリューである「プロパティ名」は addTween でそのままトゥイーンが適用できるプロパティでも、registerSpecialProperty でユーザー定義したプロパティでも、どっちでも構わないようです。
この部分、DisplayShortcuts の特殊プロパティ _scale の splitFunction である _scale_splitter では以下のように記述されています。
nArray.push( { name:"scaleX" , value:value } ); nArray.push( { name:"scaleY" , value:value } );
これが基本形。以下、ステップ1と3は共通ですが、ステップ2が少しずつ異なります。
単一のトゥイーン数値を分割し、複数のプロパティに適用
value は 24Bit カラーを表す uint です。
この値を Tweener クラス群中の AuxFunctions.as で定義された numberToR、numberToG、numberToB で R、G、B の3要素に分解し配列に格納します。
その際の name キーのバリューは第2引数 param に定義されたものを使います。
この部分、各 Shortcuts の特殊プロパティ _○○_color の splitFunction である _generic_color_splitter では以下のように記述されています。
nArray.push( { name : param[0] , value : AuxFunctions.numberToR(value) } ); nArray.push( { name : param[1] , value : AuxFunctions.numberToG(value) } ); nArray.push( { name : param[2] , value : AuxFunctions.numberToB(value) } );
到達値に、数値ではなくオブジェクトを指定してトゥイーン
このパターンでは value の値が数値ではなくオブジェクトです。
よって value キーのバリューは value.property となります。
この部分、DisplayShortcuts の特殊プロパティ _scrollRect の splitFunction である _scrollRect_splitter では以下のように記述されています。
nArray.push( { name : "_scrollRect_x" , value : value.x } ); nArray.push( { name : "_scrollRect_y" , value : value.y } ); nArray.push( { name : "_scrollRect_width" , value : value.width } ); nArray.push( { name : "_scrollRect_height" , value : value.height } );
また FilterShortcuts の特殊プロパティ _ColorMatrix_matrix の splitFunction である _generic_matrix_splitter では、name キーのバリューは色分割のパターンのように param から適用されています。
for ( var i:Number=0; i<value.length; i++ ) { nArray.push( { name:param[1][i] , value:value[i] } ); }
まとめると { name:property , value:value } の各要素はそれぞれ二つのパターンをとり、 splitFunction 内の処理としては、2×2=4とおりが考えられる、ということになるでしょうか。
- name キーのバリュー
-
- 文字列を直接記述
- param(配列)の要素
- value キーのバリュー
-
- value を直接適用
- value.property
シリーズ
- Tweener.registerSpecialPropertySplitter(6)
- Tweener.registerSpecialPropertySplitter(5)
- Tweener.registerSpecialPropertySplitter(4)
- Tweener.registerSpecialPropertySplitter(2)
- Tweener.registerSpecialPropertySplitter(1)
関連シリーズ
- Tweener.registerSpecialProperty(6)
- Tweener.registerSpecialProperty(5)
- Tweener.registerSpecialProperty(4)
- Tweener.registerSpecialProperty(3)
- Tweener.registerSpecialProperty(2)
- Tweener.registerSpecialProperty(1)