どのようにして肌を拡張し、そのための新しいhostComponentを提供していますか?あなたがしなければならないのはなぜ
? hostComponentはImageButtonが拡張するものであるButtonBaseです。なぜあなたはhostComponentの型を変更する必要がありますか?あなたがのImageButtonとしてhostComponentにアクセスする必要がある場合、あなたはそれをキャストすることができます
var myImageButton : ImageButton = hostComponent as ImageButton;
をこの質問へのコメントの中で、あなたは言った:
だから、あなたは肌を拡張し、しかし、あなたすることができます は、親のスキンが指定するコンポーネントに使用することができます。まったく真実ではありません
。 hostComponentにButtonBaseの型がありますが、ButtonSkinを拡張しようとしています。あなたのステートメントでは、ButtonButtonコンポーネントでのみButtonコンポーネントを使用することはできません。それは本当ではありません。
私はまた、メタデータに関する@ RIAstarさんのコメントに1点の明確化を追加します。メタデータは、コンパイラによるコードヒントおよびMXMLパラメータのチェックにのみ使用されます。あなたは簡単にそれらのいずれかのスタイルを作成することができます。
myHostComponent.setStyle('myImageColor',0x000000);
そして、あなたは、このような皮膚でそれを使用することができます:あなただけのsetStyleメソッドを使用して値を設定する必要があります
this.getStyle('myImageColor');
私は思う - しかし、確認していない - あなたをたとえメタデータが宣言されていなくてもCSSを使ってスタイルを設定することができます。 Spark Component lifeCycleを使用すると、コンポーネントがスタイルを初期化する前にスタイルを設定することは完全に可能なはずです。
私はあなたができるとは思いません。さらに、ImageButtonを作成する理由は何ですか?スパークボタンにはイメージを与えるアイコンスタイルがあります。 – RIAstar
うわー、いいですね。したがって、スキンを拡張することはできますが、親スキンで指定されたコンポーネントに対してのみスキンを使用できます。 ImageButtonは、アイコンだけでなく、アイコン全体に画像の背景を持たせたいからです。 ITは通常、テキストなしでさえあります。 – Ska
ああ、その場合は、プロパティの代わりにカスタムボタンのスタイルにします。こうすることで、 'getStyle()'メソッドを使ってスキンでアクセスすることができ、 'hostComponent'をオーバーライドする必要はありません。 – RIAstar