Macromedia Flash非公式テクニカルノート Object.watch()
Platform: All シンタックス 引数 コールバック 監視しているプロパティが変更されたときに呼出す関数。この引数はFunctionオブジェクトです。ストリングの関数名ではありません。コールバックのスタイルは、callback(プロパティ, 既定値, 新規の値, ユーザーデータ)となります。 ユーザーデータ コールバックメソッドに渡す任意のActionScriptデータ。引数ユーザーデータを省略すると、コールバックメソッドには'undefined'が渡されます。この引数は、オプションです。 戻り値 説明
ウォッチポイントは、値の設定をフィルタリング(あるいはプロテクト(nullify))することができます。それには、処理を加えた新規の値(または既定値)を、(訳者註: コールバック関数から)返します。ウォッチポイントを設定したプロパティを削除しても、そのウォッチポイントは消滅しません。再度そのプロパティを作成すれば、ウォッチポイントは引続き効果をもちます。ウォッチポイントを消去するには、'Object.unwatch()'メソッドを使います。
ウォッチポイントは、ひとつのプロパティにひとつだけ登録できます。同じプロパティに対してさらに'Object.watch()'メソッドを呼出すと、前のウォッチポイントが書替えられます。 'Object.watch()'メソッドは、Netscape JavaScript 1.2以降の'Object.watch()'関数と似た動作をします。大きな違いは、引数のユーザーデータです。このパラメータは、Flashにより'Object.watch()'に追加されました。Netscape navigatorではサポートされていません。ユーザーデータを引数としてイベントハンドラ(訳者註: コールバック関数を指します)に渡せば、その値をイベントハンドラで使用できます。 'Object.watch()'メソッドは、getter/setterプロパティを監視することはできません。getter/setterプロパティは、「遅延評価(lazy evaluation)」により処理されます。これは、プロパティの値を、実際に要求されるまで決定しないというものです。「遅延評価」は、効率的なことが少なくありません。それは、プロパティをひっきりなしに更新することがないからです。つまり、それが必要になったときにだけ、評価されることになります。しかし、'Object.watch()'は、プロパティを評価してウォッチポイントを実行しなければなりません。getter/setterプロパティに対して使用するとなれば、'Object.watch'はプロパティをつねに評価し続ける必要があります。これは、非効率な処理といえます。 一般的に、ActionScriptで定義済みの'_x'や'_y'、'_width'、'_height'といったプロパティは、getter/setterプロパティです。したがって、'Object.watch()'で監視することはできません。 例 myCheckBox1.setValue(true); CheckBoxの値やラベルは、プロパティとして考えられると便利です。'Object.watch()'メソッドを使えば、値やラベルに対してプロパティのようにアクセスすることができ、メソッドを呼出す必要はありません。それは、つぎのように行います。 // CheckBoxクラスのコンストラクタ定義(クラス定義) valueやlabelプロパティが変更されると、コンポーネントで指定した(訳者註: コールバック)関数が呼出されて、必要な処理が行われ、コンポーネントの表示や状態が更新されます。つぎの例は、'Object.watch'メソッドを呼出して、コンポーネントに変数が変更されたことを伝えます。それにより、コンポーネントはグラフィック上の表示を更新します。 myCheckBox1.value = false; このシンタックスは、つぎのような以前のシンタックスより端的です。 myCheckBox1.setValue(false);
Player 関連項目 出典 _____ 作成者: 野中文雄 Copyright © 2001-2006 Fumio Nonaka. All rights reserved. |
||||||