髪を引き裂く前に、誰かに聞いたほうがいいと思いました。私はxmlファイルからデータをロードしていましたが、xmlがロードされた後にloadDetailsが呼び出された場合、そのベースでロードされ、呼び出される前に呼び出された場合、オブジェクトにxml が終了すると、自動的に再度呼び出されます。シンプルですね。
private function parseXML(e:Event):void
{
trace("parseXML " + mLevelID.toString(16) + " " + mAutoload);
var xml:XML = new XML(e.target.data);
// do stuff...
System.disposeXML(xml);
mDetailsReady = true;
if (mAutoload)
loadDetails();
}
private function cancelXML(e:Event):void
{
trace("cancelXML " + mLevelID.toString(16));
mAutoload = false;
}
public function loadDetails():void
{
if (!mDetailsReady)
{
if (!mAutoload)
trace("autoload on " + mLevelID.toString(16));
mAutoload = true;
return;
}
if (mAutoload) trace("autoloaded " + mLevelID.toString(16));
// do stuff...
mAutoload = false;
}
これが問題です。フラグが適切に設定された後でも、loadDetailsを呼び出していません...とにかく、常にではありません。出力例を次に示します。
autoload on 0
autoload on a
autoload on 1
cancelXML 1
parseXML 0 true
autoloaded 0
parseXML a false
ご覧のとおり、3 つのレベルすべてで mAutoload の設定をトレースします。ただし、レベルaで実際にxmlを解析するときが来ると、mAutoloadをfalseとしてクエリし、オートロードに失敗します-いいえ、その間、別の関数でfalseとして設定されることはありません。 mAutoload を false に設定するコンストラクタです。
私は本当に混乱してイライラしています。私は、これが単なる AS3 のばかげたことであり、問題を回避する方法についての提案を喜んで受け入れることをいとわないと思いますが、今のところ、私は非常にイライラしています。フィードバックをお待ちしております。