0

SWC のビジュアル シンボルを使用するアクション スクリプト プロジェクトがあります。

CheckoutButton次のクラスが関連付けられている があります (Flash CS3 で SWC にコンパイルされます) 。

public class CheckoutButton extends SimpleButton {

    public function CheckoutButton () {     
        this.addEventListener(MouseEvent.CLICK, checkoutClicked);
    }

    // click on the button and the alpha will go to 50%
    public function checkoutClicked(e:MouseEvent):void {
        this.alpha = .5;  // take user to checkout
    }

    public function dispose ():void {

    }
}

重要:このCheckoutButton.asファイルは、SWC を使用する actionscript プロジェクトのクラスパスにあります。


コンパイル済みの SWC をアクション スクリプト プロジェクトで使用し、次のシナリオを実行しました。

1) CheckoutButton.asactionscript プロジェクトのクラスパスから削除します。

var x:CheckoutButton = new CheckoutButton();
addChild(x);

Flash CS3 ファイルからビジュアル シンボルのインスタンスを取得します。クリックすると、アルファが 50% になります。これもまさに私が期待したとおりです。

CheckoutButton.as2) actionscript プロジェクトのクラスパスでこのコードを実行します。

var x:CheckoutButton = new CheckoutButton();
addChild(x);

何も起こりません。これはまさに私の予想どおりです。基本的に、SWC のクラス定義を、SimpleButton視覚的な機能をまったく持たない でオーバーライドしたからです。


これで、たまたまシンボルのインスタンスを含むタイムライン アニメーションCheckoutAnimationが Flash ファイルに含まれるようになりました。CheckoutButton

CheckoutButton.as3)クラスパスから削除した後、actionscript プロジェクトを実行します。

var x:CheckoutAnimation  = new CheckoutAnimation();
addChild(x);

アニメーションのシンボルはクラス定義 (最初に SWC にコンパイルされたもの) を取得し、それをクリックすると、シンボルのアルファは 50% になります。これはまさに予想通りです。

CheckoutButton.as4)クラスパスにある actionscript プロジェクトを実行します。

var x:CheckoutAnimation  = new CheckoutAnimation();
addChild(x);

チェックアウト記号がアニメーションに表示されますが、クリックしても何も起こりません!!

どうしてこれなの!理解できない!上記の(2)と同じ結果が得られない理由がわかりません。また、コードが実行されていない理由もまったくわかりません。ここでの紛争は何ですか?

4

1 に答える 1

0

これはロングショットですが、提供された小さなコードに基づいて、頭に浮かぶのはこれだけです。あなたの例では、x を表示リストに 4 回追加しました。このシンボルの複数のインスタンスが表示リスト上で互いに重なり合っている可能性があります。それらのいずれかまたはすべてのアルファを設定すると、その下に他のシンボルが表示されるため、変更に気付かないでしょう。

ここでのコードは単なる例かもしれませんが、表示リストに x を 4 回追加した場合は、それが問題です。私は以前にこれを行ったことがありますが、アルファをいじったり、オブジェクトを動かしたりし始めるまで、気付かないことがあります。

于 2011-05-07T06:21:10.043 に答える