1

ログイン ボタンにマウス イベント リスナを追加すると、null オブジェクト エラーが発生します。(コンストラクターのコメントを見てください)

私は Flash CS6 を使用しており、logInbutton や screen_log_in などのオブジェクトは .fla ファイルのインスタンス名です。これが .as ファイルです。

私が得るエラーは次のとおりです。

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at actions::indexPage()

私のAS3コード:

package actions
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.events.IEventDispatcher;
    import flash.net.URLRequest;
    import flash.display.Loader;
    import fl.motion.MotionEvent;
    import flash.events.MouseEvent;

public class indexPage extends MovieClip
{
    public function indexPage():void
    {
        loadSWF("http://mathlympics.cu.cc/loginsystem.swf");

        //THIS IS THE LINE WHICH IS CAUSING THE ERROR
        //WHEN I COMMENT IT OUT THE ERROR IS GONE
        logInButton.addEventListener(MouseEvent.CLICK, goToLogIn);
    }

    var _swfLoader:Loader;
    var _swfContent:MovieClip;

    public function loadSWF(path:String):void 
    {
       var _req:URLRequest = new URLRequest();
       _req.url = path;

       _swfLoader = new Loader();
       setupListeners(_swfLoader.contentLoaderInfo);

       _swfLoader.load(_req);
    }

    function setupListeners(dispatcher:IEventDispatcher):void 
    {
       dispatcher.addEventListener(Event.COMPLETE, addSWF);
    }

    function addSWF(event:Event):void 
    {
       event.target.removeEventListener(Event.COMPLETE, addSWF);
       event.target.removeEventListener(ProgressEvent.PROGRESS, preloadSWF);
       _swfContent = event.target.content;
       screen_log_in.addChild(_swfContent);
    }

    function unloadSwf():void
    {
        _swfLoader.unloadAndStop();
        screen_log_in.removeChild(_swfContent);
        _swfContent = null;
    }

    function goToLogIn(e:MouseEvent):void
    {
        unloadSwf();
        screen_log_in.loadSWF("http://mathlympics.cu.cc/loginsystem.swf");
    }

    function goToRegister(e:MouseEvent):void
    {
        unloadSwf();
        screen_log_in.loadSWF("http://mathlympics.cu.cc/register.swf");
    }
    }
}
4

2 に答える 2

2

ステージが利用可能になるまでステージにアクセスできません。

public function indexPage():void
{
    addEventListener(Event.ADDED_TO_STAGE,init)
}

public function init(e:Event):void
{
    removeEventListener(Event.ADDED_TO_STAGE,init)
    loadSWF("http://mathlympics.cu.cc/loginsystem.swf");

    //THIS IS THE LINE WHICH IS CAUSING THE ERROR
    //WHEN I COMMENT IT OUT THE ERROR IS GONE
    logInButton.addEventListener(MouseEvent.CLICK, goToLogIn);
}
于 2013-01-07T22:41:15.373 に答える
0

将来の訪問者のために私の質問に答えるつもりです。私が把握できた問題の原因はわかりましたが、私が把握したのはそれを回避する方法です。ドキュメントクラスからフレームにコードをコピーして貼り付けるだけで、そこではまったく問題なく動作します。

于 2013-03-01T00:26:53.540 に答える