У меня есть Wrapper SWF, который загружает серию фильмов AS2. Каждый фильм AS2 загружает серию файлов .png.
AS3_wrapper.swf
|-> AS2_1.swf
|-> image_1.png
|-> image_2.png
|-> AS2_2.swf
|-> image_1.png
|-> image_2.png
Внутри AS2 я прислушиваюсь к загрузке png с помощью onLoadInit
и обновляю свой пользовательский интерфейс.
Это отлично работает для первого AS2 swf. Но когда я загружаю второй AS2 swf, onLoadInit
не запускается для pngs. Я предполагаю, что изображения находятся в кэше или что-то в этом роде. Я поместил случайную строку в конец запроса, чтобы попытаться избежать кэширования, но это, похоже, не работает.
Код в as2 выглядит примерно так:
var flagLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = Delegate.create(this, handleImageLoad);
flagLoader.addListener(listener);
var row:MovieClip = frame1["row" + (numLoaded + 1)];
flagLoader.loadClip(predictionData[numLoaded].flag + "?r="+Math.random(), row.flag);
Я стараюсь загружать только одно изображение за раз (я читал неподтвержденные свидетельства, что загрузка более чем одной вещи за один раз может запутать MovieClipLoader
). Для первого файла as2 все отлично работает. Когда я загружаю второй файл as2, handleImageLoad
никогда не вызывается.
Обновление: Еще большее недоумение вызывает то, что если я перезагружаю первый фильм AS2 (после того, как второй фильм AS2 не загружает изображения), первый фильм AS2 снова загружает изображения нормально.
Обновление 2: После попытки перейти от использования MovieClipLoader к опросу (как было подсказано), я нашел еще одно свидетельство, которое имеет отношение к делу.
Когда я загружаю первые файлы AS2 и отслеживаю из клипа верхнего уровня, он печатает _root
. Второй файл AS2 при загрузке отслеживает тот же _root
. Это привело меня к проверке, сталкивались ли они с именами, и они есть. У обоих есть ребенок по имени frame
. Первый, когда я прослеживаю, получается как _root.frame
, как и ожидалось. Второй файл AS2 отслеживает _level0.instance3.instance118.instance111.frame
. Я предполагаю, что это связано с проблемой.
Flash сохраняет _root двух файлов одинаковыми, но меняет расположение своих дочерних файлов (для впоследствии загруженных файлов, у которых есть дочерние элементы с одинаковыми именами). Так что либо onLoad идет не в тот клип, либо события о его загрузке.