Tweener.registerSpecialProperty(3)
2007/12/17 21:54 - tweener
前回書いたとおり、今回は registerSpecialProperty を使ってテキストフィールドのサイズをトゥイーンしてみます。
registerSpecialProperty を使用しないでテキストフィールドのサイズをトゥイーンさせたい場合はどういうコードを書くのか、そして registerSpecialProperty を使うと何処がどう変わるのか、というのを見てみたいと思います。
まずは registerSpecialProperty を使用しないパターンから。
registerSpecialProperty を使わない場合
この場合のポイントは次の二つ。
- addTween のターゲットは TextFormat
- onUpdate で TextFormat を TextField に適用するメソッドを指定
Tweener.addTween( fmt , …(1) { size : val , time : 1 , onUpdate : onUpdateHandler , …(2) transition : "linear" } );
private function onUpdateHandler():void { fld.defaultTextFormat = fmt; fld.setTextFormat( fmt ); }
トゥイーンさせたいプロパティ size は TextFormat のプロパティだから、addTween のターゲットは TextFormat。
しかし TextFormat は、そのプロパティを更新しただけでは表示に何の影響も与えないから、対象の TextField に当該 TextFormat を適用。
至極当たり前の記述です。
では、これと同じ処理を registerSpecialProperty を使い、あたかも TextField にサイズに関するプロパティが存在し、それをトゥイーンさせているかのような記述をおこなうにはどうするか。それが以下のソースです。
registerSpecialProperty を使う場合
registerSpecialProperty を使用することで変わる点は3つあります。
- registerSpecialProperty の呼び出し
- 対象プロパティの取得と更新をおこなうメソッドの定義
- addTween の記述変更
まず以下のように init() 内で registerSpecialProperty を呼び出します。
特殊プロパティ名やメソッド名はあまり考えずにつけました。センスねー、とか言わないように。
Tweener.registerSpecialProperty( "_size" , _size_get , _size_set );
次に、対象プロパティの取得と更新をおこなうプロパティをそれぞれ定義します。
取得メソッドは単純に対象プロパティ、今回は TextFormat.size の値を返すだけ。
更新メソッドは先ほどの registerSpecialProperty を使用しないサンプルで記述した onUpdateHandler と同じ処理を記述します。
<プロパティの取得> private function _size_get( obj : Object , param : Array , extra : Object=null ):Number { var fmt:TextFormat = obj.getTextFormat(); return fmt[ "size" ]; } <プロパティの更新> private function _size_set( obj : Object , value : Number , param : Array , extra : Object=null ): void { var fmt:TextFormat = obj.getTextFormat(); fmt[ "size" ] = value; fld.defaultTextFormat = fmt; fld.setTextFormat( fmt ); }
最後に addTween の変更です。
addTween のターゲットを TextField にし(1)、特殊プロパティによる記述に切り替えます(2)。
Tweener.addTween( fld , …(1) { _size : val , …(2) time : 1 , transition : "linear" } );
これで、まるで TextField に _size というプロパティがあるかのごとく、振る舞わせることができるわけです。
ちなみに公式クラスのTextShortcuts.as を使用すると、以下のような記述となります。
以下はコンパイルした swf です。今まで掲げたサンプルはどれも全く同じ見かけなので、代表して1個だけ載せます。領域内をクリックするとテキストフィールドのサイズがトゥイーンします。
シリーズ
- Tweener.registerSpecialProperty(6)
- Tweener.registerSpecialProperty(5)
- Tweener.registerSpecialProperty(4)
- Tweener.registerSpecialProperty(2)
- Tweener.registerSpecialProperty(1)
関連シリーズ
- Tweener.registerSpecialPropertySplitter(6)
- Tweener.registerSpecialPropertySplitter(5)
- Tweener.registerSpecialPropertySplitter(4)
- Tweener.registerSpecialPropertySplitter(3)
- Tweener.registerSpecialPropertySplitter(2)
- Tweener.registerSpecialPropertySplitter(1)