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.as
actionscript プロジェクトのクラスパスから削除します。
var x:CheckoutButton = new CheckoutButton();
addChild(x);
Flash CS3 ファイルからビジュアル シンボルのインスタンスを取得します。クリックすると、アルファが 50% になります。これもまさに私が期待したとおりです。
CheckoutButton.as
2) actionscript プロジェクトのクラスパスでこのコードを実行します。
var x:CheckoutButton = new CheckoutButton();
addChild(x);
何も起こりません。これはまさに私の予想どおりです。基本的に、SWC のクラス定義を、SimpleButton
視覚的な機能をまったく持たない でオーバーライドしたからです。
これで、たまたまシンボルのインスタンスを含むタイムライン アニメーションCheckoutAnimation
が Flash ファイルに含まれるようになりました。CheckoutButton
CheckoutButton.as
3)クラスパスから削除した後、actionscript プロジェクトを実行します。
var x:CheckoutAnimation = new CheckoutAnimation();
addChild(x);
アニメーションのシンボルはクラス定義 (最初に SWC にコンパイルされたもの) を取得し、それをクリックすると、シンボルのアルファは 50% になります。これはまさに予想通りです。
CheckoutButton.as
4)クラスパスにある actionscript プロジェクトを実行します。
var x:CheckoutAnimation = new CheckoutAnimation();
addChild(x);
チェックアウト記号がアニメーションに表示されますが、クリックしても何も起こりません!!
どうしてこれなの!理解できない!上記の(2)と同じ結果が得られない理由がわかりません。また、コードが実行されていない理由もまったくわかりません。ここでの紛争は何ですか?