0

次のように定義されたカスタム スキンクラスを持つスパーク ボタン サブクラスがあります。

<s:Button xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      skinClass="com.company.NvrControlButtonSkin"
      enabled="false">

次に、このボタンのスクリプト部分でオブジェクトのセッターをサブクラス化し、そのオブジェクトにプロパティ リスナーを登録します。リスナーでは、スキン自体にプロパティを設定する必要があります。ただし、skinプロパティによって返されるオブジェクトがまだ、skinClass で設定したタイプになっていない場合があります。実際のスキンが設定される前に、プロパティ リスナーが既に呼び出されていると仮定します。プロパティが実際に変更されたときに通知を受けたいskinので、必要なスキン オブジェクトのプロパティを設定できます。

聞くことができるもの、オーバーライドできるメソッド、またはスキンが実際にカスタムスキンに設定されていることを通知するものはありますか?

4

1 に答える 1

0

あなたは幸運です、これは簡単な修正です。SkinnableComponent(したがって もButton) オーバーライドできる次の 2 つの保護されたメソッドを実装します。

  • コンポーネントに新しいスキンが適用されるたびに呼び出されるattachSkin()
  • detachSkin()、現在のスキンがコンポーネントから削除されたときに呼び出されます

とは言っても、プロパティをスキンに直接設定することは避けようとします。ホスト コンポーネントとスキンの間に密接な結合が生じるからです。スキン パーツを使用してプロパティを更新してみてください。

于 2013-01-10T11:04:59.473 に答える