-1

私は基本的に の初心者でActionScript、問題に遭遇しました。_root変数をテキスト ファイルからムービーの にロードしたいと考えています。同様に、テキスト ファイルには が含まれており、それらをおよびとして呼び出すことができるように、&var=value&var2=value2&それらを直接入力したいと考えています。まず、明らかな解決策であるloadVariablesを使用してみました。私は次の関数を介してそれを行いました:_root_root.var_root.var2

function getState (save){
    //loadVariables("getstate.php?save="+save, "/");
    loadVariables("state.txt, "/");
}

_root" " ではなく" " にロードしようとしまし/たが、それでも何も起こりません。リクエストは送信されますが、テキスト ファイルの内容がコードに到達する途中でハイパースペースで失われます。

そこで、loadVariables の代わりに LoadVars を使用してみました。vars を に直接ダンプするオプションがなかったため、この関数にはがっかりしましたが、_rootとにかく試してみることにしました。私の関数が LoadVars でどのように見えるかは次のとおりです。

function getState (save){
    varReceiver = new LoadVars();
    varReceiver.onLoad = function(){
        varsRecieved=true;
        _root.notloggedin = this.notloggedin;
        _root.nostate = this.nostate;
        _root.saveName=this.saveName;
        //and lots of other variables
        trace (_root.saveName);
    };
    varReceiver.load("state.txt");
    trace (_root.saveName);
}

onLoad 関数内のトレースは正しい値を返しますが、その後のトレースは undefined を返します。このループで onLoad が発生するのを待ってみました:

while (varsRecieved != true){
    trace ("not yet...");
}

これにより、 Flashが無限ループに陥りました。

私は本当にこの問題について助けていただければ幸いです=)

4

1 に答える 1

1

onLoad情報がロードされた後に実行する必要があるコードを別の関数に入れ、ハンドラーの最後でその関数を呼び出します。

function getState (save){
    varReceiver = new LoadVars();
    varReceiver.onLoad = function(){
        _root.notloggedin = this.notloggedin;
        _root.nostate = this.nostate;
        _root.saveName=this.saveName;
        //and lots of other variables
        trace (_root.saveName);
        doRest();
    };
    varReceiver.load("state.txt");
}

function doRest()
{
    // ...
}

getState()は情報が読み込まれる前に戻るため、既存のコードを に移動する必要がある場合があることに注意してくださいdoRest()

于 2013-12-08T07:19:10.513 に答える