Объект загрузчика не запускает событие завершения после загрузки внешнего файла CSS / SWF

Привет, я немного застрял здесь в течение последних нескольких дней. У меня есть SWF, работающий в песочнице Security.LOCAL_TRUSTED.

Я могу без проблем загружать свои файлы JPEG и простые файлы SWF.

var loader:Loader = new Loader();
loader.load(new URLRequest('file:///test.jpg'));

Но однажды я успешно загружаю SWF-файл, созданный из файла CSS (например, myfont.swf) с помощью Flash Builder 4 (скомпилировать CSS в SWF-файл), затем я не могу снова загрузить изображения или SWF-файлы, как это было раньше.

События процесса запускаются и выглядят как его загрузка, но полное событие никогда не запускается. Также не возникает никаких других IOError или Предупреждение безопасности.

Может ли загруженный SWF (myfont.swf) изменить изолированную программную среду загрузочного SWF? Или что мне здесь не хватает.

CSS для myfont.swf

/* CSS file */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";


@font-face {
    src: url("../assets/fonts/Arial.ttf");
    fontFamily: "Arial";
    embedAsCFF: true;
    unicodeRange:
        U+0000-U+007F,
        U+00A0-U+00FF,
        U+2000-U+206F,
        U+20A0-U+20CF;
}

@font-face {
    src: url("../assets/fonts/Arial Bold.ttf");
    fontFamily: "Arial";
    fontWeight: "bold";
    embedAsCFF: true;
    unicodeRange:
        U+0000-U+007F,
        U+00A0-U+00FF,
        U+2000-U+206F,
        U+20A0-U+20CF;
}

2 ответа

Решение

Хорошо, я решил это, как только я не понимаю, почему.

Файлы css / swf, которые я загружал, находились не в том же каталоге, что и основной SWF-файл.

теперь, когда я загружаю свой шрифт через файл://./fonts/arial.swf, кажется, все работает.

Если кто-то еще застрянет; Похоже, расположение загруженного файла имеет значение.

У кого-нибудь есть идеи, почему это так?

Попробуйте это: сделайте ваш загрузчик переменной класса, а не локальной переменной. Сборщик мусора уничтожает его до загрузки файла.

Итак, в теле класса:

private var loader:Loader;

и позже в вашем методе:

loader = new Loader();
Другие вопросы по тегам