1

それだけで、アイコンを埋め込む場合:

[Embed(source='icons/checkmark.png')]
private static var CheckMark:Class;

動的クラスになります。setStyle メソッドを呼び出すことで、実行時にボタンにアイコンを簡単に割り当てることができます。

var btn:Button = new Button();
btn.setStyle("icon", CheckMark);

しかし、アイコンをボタンに割り当てる前に、アイコンのアルファ値を変更したり、ピクセルを再描画したりするなど、実行時にアイコンを変更したい場合はどうでしょうか?

今のところ満足のいく答えが見つかりません...

4

3 に答える 3

2

これは私が見つけることができた唯一の答えです:ダイナミックアイコン (ソースの表示の例)

彼のソリューションには、ボタンのアイコン設定で使用されるカスタム「DynamicIcon」クラスと、動的アイコンを描画するために Button クラスに 1 つのメソッドを追加するカスタム Button クラスが含まれます。

最終的に、BitmapData を DynamicIcon クラスに送信できるようになり、ボタンに表示されます。したがって、画像を埋め込み、アセット クラスをインスタンス化し、bitmapasset を取得して必要に応じて変更し、bitmapData をアイコンに送信します。

これは興味深い問題であり、もっと簡単な解決策があるはずですが、これはそれほど手間をかけずに機能します。

于 2008-10-02T05:05:50.163 に答える
0

プログラムスキンで私が見つけた大きな問題は、ボタンが幅/高さの測定を拒否することです. それぞれの get メソッドをオーバーライドすることで、これを簡単に回避できました。

public function get width():Number { return WIDTH; をオーバーライドします。} public function get height():Number { return HEIGHT; } をオーバーライドします。}

私の場合、TabNavigator のボタンを変更する必要があったため、ボタンをサブクラス化する簡単な方法はありません。ありがたいことに、各スキンの親はボタンなので、スキン内で静的メソッドを使用して、アイコン スキンが属する Button のインスタンスを識別できます。

すべてを覆う「アイコン」スタイルを使用している場合は、状態ごとに新しいスキン オブジェクトが作成されます。したがって、アイコンの状態を変更するときは、このことに留意する必要があります。

于 2009-04-02T16:10:20.377 に答える
0

これを解決する方法は、アイコン自体を手動で描画するプログラム スキン クラスを実装することです。アイコンがない場合でも、アイコンがあるかのようにボタンが正しいサイズを計算するようにするために、おそらくさらに多くの作業を行う必要があります。アイコンへの参照がどのように保存されているかを確認するには、ボタンのソース コードを調べなければならない場合があります。

私は、自分のやりたいことを正確に実行するプログラム スキンを作成し、興味深い CSS 宣言を使用して状態を変更するのが大好きです。たとえば、次のようにします。

button.setStyle("customIconAlpha", .4);

そしてもちろん、スキンまたはカスタム ボタン クラスは次のようになります。

var alpha:Number = getStyle("customIconAlpha") as Number;

(それをタイプキャストする必要があるかどうかはわかりません)

于 2008-10-02T17:35:31.203 に答える