【问题标题】:Loader object not firing complete event after an external css/swf file got loaded加载外部 css/swf 文件后,加载程序对象未触发完成事件
【发布时间】:2011-06-11 06:09:52
【问题描述】:

嗨 在过去的几天里,我有点卡在这里。我有一个在 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;
}

【问题讨论】:

    标签: apache-flex flash embedded-fonts flashbuilder4


    【解决方案1】:

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

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

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

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

    有人知道为什么会这样吗?

    【讨论】:

    【解决方案2】:

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

    所以在类体中:

    private var loader:Loader;
    

    以及稍后在您的方法中:

    loader = new Loader();
    

    【讨论】:

    • 遗憾的是没有这样做:(。在我加载从 CSV 创建的 SWF 文件之前,它的工作方式与预期一样。所以我知道代码在一开始就可以肯定地工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多