0

私は AS3 OOP を学んでいて、簡単なことをしようとしています。ここでは、ステージにボタンを追加してクリック イベントを処理しようとしています。

これが私の簡単なコードです:

package
{
    import flash.display.Stage;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class External extends MovieClip
    {

    private var counter:Number;
    public var HitButtonA:RedButton;

        public function External() // constructor
        {
         HitButtonA= new RedButton();
         HitButtonA.x = 40; 
         HitButtonA.y = 65; 
         addChild(HitButtonA);

         setupListeners();    
         counter=0;         
        }


    public function setupListeners()
    { trace("bbbb");
        HitButtonA.addEventListener(MouseEvent.CLICK, hitButtA);
    }

    public function hitButtA(e:MouseEvent)
    {
        //display.text=String(++counter);
        trace("aaaaa");
    }



    }
}

残念ながら、ステージにボタンを追加することさえできず、エラーも何もありません...何が問題なのですか?

4

2 に答える 2

2

外部オブジェクトをステージに追加するのを忘れたようです。

次のように追加してください。

var myExternal:External = new External();
stage.addChild(myExternal);

編集:

ありがとう!とにかく、これらの 2 つの行を 1 つの行として両方とも行うには? 上記をインスタンス化すると、ステージに追加されますか?

はい。参照が必要ない場合は、単純に呼び出します。stage.addChild(new External()); または、コンストラクターを介してステージの参照を渡すことにより、コンストラクターを介して子をステージに追加することもできvar myExternal:External = new External(this.stage);ます。

次に、コンストラクターを次のように変更する必要があります。

public function External(DisplayObject theStage) // constructor
    {
     HitButtonA= new RedButton();
     HitButtonA.x = 40; 
     HitButtonA.y = 65; 
     addChild(HitButtonA);

     setupListeners();    
     counter=0;
     theStage.addChild(theStage);
    }

ただし、これは裏返しの視点を促進し、後で問題を引き起こす可能性があるため、あまり良い方法ではありません。

于 2013-08-14T01:44:13.653 に答える
2

起こり得るいくつかの間違いを次に示します。

  • External.as はドキュメント クラスではなく、External クラス オブジェクトを作成またはステージに追加していません。
  • External.as が設計上のドキュメント クラスである場合は、それが本当にドキュメント クラスとして設定されているかどうかを確認します。プロパティ パネルで Flash Professional を使用している場合は、ドキュメント クラス入力ボックスの右にある編集ボタンをクリックします。生成された空白のクラスが作成された場合は、間違いの原因です。
  • フレーム スクリプトだけで RedButton のインスタンスを追加できるかどうかを確認する

    var rButton:RedButton = new RedButton(); addChild(rButton);

それ以外は、あなたのコードに問題はありません。

その助けを願って、頑張ってください!

于 2013-08-14T01:29:51.070 に答える