2

前提は次のとおりです。

通常状態の画像 (buttonX.png) とマウスオーバー状態 (buttonXglow.png) のボタンがそれぞれ 10 個あります。ボタンはフラッシュで手動で作成されますが、as3 メイン クラスで参照されます。ボタンにさまざまな状態を追加する必要があります。

私は次のことをしたい:

  1. ボタンを選択済みとしてマークします。たとえば、常に (buttonXglow.png) で表示します。
  2. ボタンを無効にすることができます (私は mouseEnabled = false; を使用していますが、現時点ではその動作をオフにしていますが、外観を (buttonXout.png) 画像に変更したいと考えています)。

  3. AS3 ではかなり複雑なようです。(buttonXglow.png) 画像を、メイン クラスにメンバー変数として配置した次のものを埋め込もうとしましたが、うまくいかないようです。

    [Embed(source='button1out.png')]
    public static var Button1Out:Class;
    

また、ボタンの外観を実際にビットマップに置き換える方法がわかりません。ボタンのupStateを交換しようと考えていました。

前もって感謝します!

4

2 に答える 2

2
  1. AS3 ではかなり複雑なようです。(buttonXglow.png) 画像を、メイン クラスにメンバー変数として配置した次のものを埋め込もうとしましたが、うまくいかないようです。

    [Embed(source='button1out.png')] public static var Button1Out:Class;

(これはフラッシュ cs3 では機能しません)

上記の [Embed(...)] 構文は FlashDeveloper に属しているという答えがここにあるようです。オプションを使用している Flash CS3 では、画像をライブラリに手動でインポートし、クラスが作成されるように設定します各画像(少し時間がかかりますが、うまくいきました)。

編集:「2022 Class %1 must inherit from DisplayObject to link to a symbol.」という問題があったことに注意してください。これは、何らかの理由でリンケージが機能しなくなった Flash CS3 のバグのようです。ライブラリから画像を削除して再度インポートすることでこれを解決します。

[ビットマップ プロパティ] ウィンドウの [リンケージ] オプションを使用して、ActionScript のエクスポートを設定します。クラス名を設定すると、基本クラスが flash.display.BitmapData に設定されます。

コードでは、通常どおりクラスを使用できます。たとえば、次のようになります。

var image:Bitmapdata=new Button1outClass(23, 23); // コンストラクターで幅と高さを設定する必要があることに注意してください。

次のコードを使用して、ビットマップでスプライトを生成しました。

button1Out=new Sprite();
button1Out.addChild(new Bitmap(new Button1outClass(23, 23)));   

それは私たちを導きます

  1. ボタンを選択済みとしてマークします。たとえば、常に (buttonXglow.png) で表示します。
  2. ボタンを無効にできるようにします (私は mouseEnabled = false; を使用していますが、現時点ではその動作をオフにしていますが、外観を (buttonXout.png) 画像に変更したいと考えています)。
  1. 指さすだけで簡単に解決

    button.upState=button.overState;

(問題は、復元できるように upState を保存する必要があることです)

  1. 次のように簡単です。

    button.upState=button1Out:

(ここでも復元が問題ですが、ボタンを無効にするだけなので、二度と有効にしないでください)

于 2009-11-19T19:22:39.507 に答える
0

そうですね、ActionScriptが唯一の方法だと思います...運が良ければコンポーネントを見つけることができますが、おそらく自分でそれを行う必要があります...

とにかく...ビットマップを表示するには、次のようなことを行う必要がありますmyButton.upState = new Button1Out();...あなたの質問に答えることを願っています... :)

于 2009-11-19T16:34:35.940 に答える