0

これが取引です。.flaファイルから呼び出すMainクラスがあります。ライブラリ「exportforactionscript」にオブジェクトを設定するまではすべて正常に機能します...その後、ステージは機能しなくなり、オブジェクトを「export for actionscript」にチェックしたため、ステージは「null」を返します。

私はflashcs5を使用していますが、初期バージョンのflashでは発生しません。

英語については申し訳ありません...そして私は十分に明確だったと思います。

コードサンプル:

package com {

import flash.display.MovieClip;

public class Teste extends MovieClip {

    public function Teste() {
        trace(stage)// traced null 
    }
}
}

私が行った手順を説明しようと思います。-そのTesteクラスを作成します。-.flaファイルを開き、.flaファイルのプロパティの[クラス]フィールドにそのクラスを追加します。-MovieClipを作成し、Actionscriptからエクスポートしてみます。そしてここに問題があります...私がそれをしたとき、私がライブラリにMovieClipをエクスポートしたという理由だけで、ステージはNullを返すようになりました。oO

4

2 に答える 2

1

その理由は、ロードするものがあまりないときに、ステージがすぐに利用可能になった可能性があるためです。Actionscript用にエクスポートするものを追加したので、ロードに1ミリ秒長くかかる可能性があり、ステージは使用できなくなります。

ステージが存在するかどうかを常に確認し、ステージが存在するのを待ってから参照してください。

これを試して:

package com {

import flash.display.MovieClip;

public class Teste extends MovieClip {

    public function Teste() {
        if(!stage) addEventListener(Event.ADDED_TO_STAGE, _addedToStage)
        else _addedToStage();
    }

    private function _addedToStage(e:Event = null)
    {
        trace(stage)// traced null 
    }
}
}
于 2011-07-21T18:20:32.533 に答える
0

それがドキュメントクラスである場合、ステージオブジェクトが存在する前にこのコードが初期化されている可能性があります。私は推測しているだけですが、動作の変化は、'export for actionscript'クラスが最初のフレームに定義をロードし、何らかの形の遅延を引き起こしていることが原因であると予想しています。

ステージが存在するのを待ってみてください:

package com {

import flash.display.MovieClip;

public class Teste extends MovieClip {

    public function Teste() {
        if(stage) {
            init();
        } else {
            addEventListener(Event.ADDED_TO_STAGE,init);
        }
    }

    private function init(evt:Event = null):void {
        removeEventListener(Event.ADDED_TO_STAGE,init);
        //stage should now exist
        trace(stage);
    }
}
}
于 2011-07-21T18:23:00.770 に答える