Выгрузка SWF-файлов, загруженных с помощью Loader :: load () - PullRequest
1 голос
/ 24 января 2010

Я успешно использую Loader::load() для загрузки SWF-файлов в мой основной SWF-файл, а затем добавляю их как дочерний элемент Sprite. Когда происходят другие события, я хочу удалить swfs по мере необходимости. Я посмотрел на unload() и removeChildAt() без успеха.

Я только добавил вызов addChild(), чтобы попытаться зафиксировать загруженный экземпляр, чтобы я мог удалить его. Загрузка отлично работает без addChild();

Я также попытался опубликовать на плеере v.10 и использовать myLoader.unloadAndStop(); но это тоже не имеет никакого эффекта;

Следующий демонстрационный код показывает мою проблему. Я вижу, что один ребенок добавлен, а другой удален, но intro.swf все еще не работает.

import flash.display.Loader; 
import flash.display.Sprite;
import flash.display.LoaderInfo;
import flash.net.URLRequest;

var myLoader:Loader = new Loader();
var holderMC:Sprite = new Sprite();
var myRequest:URLRequest = new URLRequest('intro.swf');

myLoader.load(myRequest);
holderMC.addChild(myLoader);
trace("initial:"+holderMC.numChildren);  // traces initial:1

while(holderMC.numChildren > 0) {
 holderMC.removeChildAt(0);
 trace("now there are:"+holderMC.numChildren); // traces now there are :0
}
myLoader.unload();

// Редактировать - также пытался:

myLoader.unloadAndStop();
myLoader = null;

Есть мысли?

1 Ответ

3 голосов
/ 24 января 2010

У вас определенно что-то еще происходит здесь. Во-первых, как вы видите "intro.swf"? Вы создаете holderMC и добавляете загруженный SWF как дочерний, но когда вы добавляете holderMC в список отображения?

Правильный способ удаления фильма из вида:

holderMC.removeChild(myLoader);

Чтобы позволить содержимому holderMC быть помеченным для сбора мусора, вам нужно установить его в null. Итак,

holderMC.removeChild(myLoader);
myLoader.unload(); // this will set the content (the movie itself) to null.
myLoader = null; // npw the loader can be garbage collected too

Если вы делаете removeChild, и он все еще показывает, вам нужно будет опубликовать больше кода, чтобы показать, в чем действительно проблема.

...