0

フレームが 1 つしかない AS3 ファイルがあります。コードは次のとおりです。

stop();
trace("Debut du code.");
var chargeur:Loader = new Loader();
var chargeur2:Loader = new Loader();
var adress:URLRequest = new URLRequest("img/idle.swf");

chargeur.load(adress);
addChild(chargeur);

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE,isLoaded)

function isLoaded (evt:Event) {
trace("Loading complete");
var adress2:URLRequest = new URLRequest("img/oldcoucou.swf");

chargeur2.load(adress2);
addChild(chargeur2);
}

問題は: メモリ リークがあり、3 か月/秒のようなものです...なぜ、何が間違っているのかわかりません。手がかりはありますか?

ありがとう。

編集:ローダーが1つしかないので、メモリリークはありません。2 つロードしてから 1 つを非表示にすると (chargeur.visible=false または chargeur.y=1200)、メモリ リークも発生しません。この問題は、同時に 2 つが表示されている場合にのみ発生します。それはクレイジーに聞こえますが、私は知っています...私はそれが既知のバグまたはコードの間違いであることを望んでいました...

4

2 に答える 2

0

無理だと思います。swf 1 があなたのプログラムに読み込まれると思います。それはすぐに自分のプログラムを実行します。他の swf を読み込み、swf A は swf B を読み込み、swf B は swf A を読み込みます ....... \n. これは、スタック オーバーフローを引き起こす無限再帰関数のようなものです。

于 2012-09-15T15:43:35.087 に答える
0

ロードされた .swf にメモリ リークが含まれていないと仮定すると、次のコードにはリークがないはずです。

stop();
trace("Debut du code.");
var chargeur:Loader = new Loader();
var chargeur2:Loader = new Loader();
var adress:URLRequest = new URLRequest("img/idle.swf");
var adress2:URLRequest = new URLRequest("img/oldcoucou.swf");

chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE,isLoaded, false, 0, true);
chargeur.load(adress);

function isLoaded (evt:Event):void {

chargeur.contentLoaderInfo.removeEventListener(Event.COMPLETE,isLoaded);
adress = null;
trace("Loading1 complete");
addChild(chargeur);

chargeur2.contentLoaderInfo.addEventListener(Event.COMPLETE,isLoaded2, false, 0, true);
chargeur2.load(adress2);

}

function isLoaded2 (evt:Event):void {

chargeur2.contentLoaderInfo.removeEventListener(Event.COMPLETE,isLoaded2);
adress2 = null;
trace("Loading2 complete");
addChild(chargeur2);

}
于 2012-07-02T15:47:30.957 に答える