Flex / Actionscript 3で一般的なプロパティ変更関数を作成するにはどうすればよいですか?
-
03-07-2019 - |
質問
Flexは初めてですが、プログラミングは初めてではありません。私はすべてのテキスト入力ボックスがフォーカスを受け取ったときに呼び出される一般的なイベントハンドラーを作成します。フォーカスが合ったら、テキスト入力ボックスの色を変更したいです。彼らが焦点を失ったとき、「非アクティブ」を復元したいカラープロファイル。テキスト入力ボックスごとにActionScriptイベントハンドラーを作成できますが、それが不十分であることは誰もが知っています。 :o)必要なのは、イベントハンドラーを呼び出しているオブジェクトにアクセスする方法です。
Delphiでは、Senderオブジェクトを渡す関数を記述して、呼び出し元のオブジェクトのプロパティにアクセスできるようにしました。 ActionScript / Flexのアーキテクチャは完全に異なると思うので、これを行うのが難しいのです。
予想に感謝します!
解決
TextInputをサブクラス化し、そこでフォーカスイベントを処理する必要があります。これは、複雑なコードがなくても、探しているものを実現する最も簡単な方法だと思います。
他のヒント
あなたが何を求めているのか理解しているといいのですが...イベントの委任について話しているのですか?
これは私のために働いた:
// 'focusOut' for blur
stage.addEventListener('focusIn', function(e:Event):void {
// The focused control is e.target
});
フォーカスされた入力ボックスの外観を変更する場合は、 focusSkin
プロパティを設定してこれを行うことができます。これをグローバルに実行する場合は、CSSファイルにスタイル宣言を配置できます。
このCSSの例では、デフォルトのfocusSkin( mx.skins.halo.HaloFocusRect
)を埋め込みPNGファイルに置き換えています。
TextInput {
focusSkin: Embed(source="focus.png");
}
TextInputには、フォーカススキンの不透明度を変更するなど、フォーカスの外観を変更するためのいくつかのプロパティがあります( focusAlpha
プロパティ)。詳細については、 TextInputのドキュメントをご覧ください。