1

ええ、ここで同様の問題に関するいくつかのトピックを見てきましたが、私の問題は異なります。FlashDevelop で AIR プロジェクトをセットアップし、次のように記述しました。

package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;

    public class Main extends Sprite {     
        public function Main():void {
            graphics.beginFill(0)
            graphics.drawRect(0, 0, 100, 100)
            graphics.endFill()
            addEventListener(MouseEvent.CLICK, onEvt)
        }
        private function onEvt(e:MouseEvent):void {
            trace("yahoo")
        }
    }
}

プロジェクトをコンパイルし、黒い四角をクリックしても何も起こりませんでした。なし。次に、このコードをすべて別のクラス RealMain に移動し、子として追加しました。

public function Main():void {
    addChild(new RealMain())
}

そしてそれはうまくいきました。では、クラスがドキュメント クラスの場合、なぜイベント リスナーが機能しないのでしょうか。はい、stage.addEventListener() を使用できますが、なぜですか?

4

3 に答える 3

1

スプライトのグラフィックス プロパティではなく、シェイプを作成し、その上に描画して、スプライトに addChild() を使用してみてください。子がゼロのスプライトはシェイプとして動作し、シェイプ自体はイベントをリッスンできないと思います。

public class Main extends Sprite {     
    public function Main():void {
        var sh:Shape=new Shape();
        sh.graphics.beginFill(0);
        sh.graphics.drawRect(0, 0, 100, 100);
        sh.graphics.endFill();
        addChild(sh);
        addEventListener(MouseEvent.CLICK, onEvt);
    }
    private function onEvt(e:MouseEvent):void {
        trace("yahoo");
    }
}

このように動作するはずです。

于 2012-12-05T16:00:47.237 に答える
1

addEventListener は EventDispatcher クラスの関数であり、EventDispatcher のインスタンスを呼び出す必要があります。

Main は、静的な方法で呼び出されるため、多少異なる動作をします。Main のインスタンスを作成するには、以下のような作業を行う必要があります (あまりエレガントではありません)。

package {
    import flash.display.Stage;
    import flash.display.MovieClip;
    public class Main extends MovieClip {
        private static var _instance:Main = null;
        public function Main() {
            _instance = this;
        }
        public static function getInstance():Main { return _instance; }
        public static function getStage():Stage { return getInstance().stage; }
    }
}

addchild は、通常のクラスの作成に役立ちます。

于 2012-12-05T16:43:36.177 に答える
-1

ドキュメント クラスは拡張する必要がMovieClipあります。Sprite

于 2012-12-06T00:47:32.677 に答える