加载外部css / swf文件后,Loader对象未触发完成事件

时间:2011-01-18 17:30:22

标签: flex flash embedded-fonts flashbuilder4

您好 这几天我有点卡在这里。我在Security.LOCAL_TRUSTED沙箱中运行了一个SWF。

我可以毫无问题地加载我的JPEG和简单的SWF

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

但有一次,我成功使用Flash Builder 4(编译CSS到SWF)加载从CSS(例如myfont.swf)文件创建的SWF,然后我无法加载任何图像或SWF就像我以前一样。

进程事件被触发并且看起来像它的加载但是完整的事件永远不会被触发。也不会发生任何其他IOError或安全警告。

加载的SWF(myfont.swf)是否可以更改加载swf的沙箱?或者我在这里错过了什么。

myfont.swf的CSS

/* 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 :(得分:0)

试试这个:让你的加载器成为一个类变量,而不是局部变量。垃圾收集器在文件加载之前销毁它。

所以在课堂上:

private var loader:Loader;

以及稍后的方法:

loader = new Loader();

答案 1 :(得分:0)

好的,我解决了,我怎么也不明白为什么。

我加载的css / swf文件与主SWF文件不在同一目录中。

现在我通过 file://./fonts/arial.swf 加载我的字体,一切似乎都有效。

如果有其他人被卡住;看起来加载文件的位置很重要。

任何想法都是为什么?