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

Привет Я немного застрял здесь в течение последних нескольких дней. У меня есть 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 ]

0 голосов
/ 18 января 2011

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

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

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

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

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

0 голосов
/ 18 января 2011

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

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

private var loader:Loader;

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

loader = new Loader();
...