1

我在将 Flashvars 加载到我的 Flash 应用程序时遇到了一个奇怪的问题。我试图隔离代码并在另一个文档中尝试,但返回的对象仍然是空的。

这是我的 HTML 代码:

<div id="Div1">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="630" height="671" id="testApp" align="middle">
    <param name="movie" value="{$this->siteUrl}/flash/testVars.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="play" value="true" />
    <param name="loop" value="true" />
    <param name="wmode" value="window" />
    <param name="scale" value="showall" />
    <param name="menu" value="true" />
    <param name="FlashVars" value="one=1&two=2" />
    <param name="devicefont" value="false" />
    <param name="salign" value="" />
    <param name="allowScriptAccess" value="always" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="{$this->siteUrl}/flash/testVars.swf" width="630" height="671">
        <param name="movie" value="{$this->siteUrl}/flash/testVars.swf" />
        <param name="quality" value="high" />
        <param name="bgcolor" value="#ffffff" />
        <param name="play" value="true" />
        <param name="loop" value="true" />
        <param name="FlashVars" value="one=1&two=2" />
        <param name="wmode" value="window" />
        <param name="scale" value="showall" />
        <param name="menu" value="true" />
        <param name="devicefont" value="false" />
        <param name="salign" value="" />
        <param name="allowScriptAccess" value="always" />
    <!--<![endif]-->
        <a href="http://www.adobe.com/go/getflash">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a>
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

这是我的 as3 代码:

ExternalInterface.call('console.log', "Begin")
var obj:Object = this.loaderInfo.parameters;
for(var i:String in obj)
{
    this[i] = obj[i];
    ExternalInterface.call('console.log', "Parsing: " + i + " - " + obj[i])
}

它在 Chrome 的控制台窗口中很好地显示,但它不打印 flashvars。你能告诉我我做错了什么吗?

谢谢!

4

3 回答 3

1

一种解决方法是嵌入整个 TLF 运行时,而不是从外部加载它。adobe在此操作指南中描述了执行此操作的步骤:

要在已发布的 SWF 文件中编译 TLF ActionScript 资产:

  • 选择文件 > 发布设置。

  • 单击 Flash 选项卡。

  • 单击脚本菜单旁边的设置按钮。

  • 单击库路径选项卡。

  • 从默认链接菜单中选择合并到代码中。

显然,这会显着增加您的 swf 文件大小。

于 2013-02-20T09:28:43.440 回答
0

好的,这是 Flash 中带有 TLF 文本组件的“错误”。在文档中包含 TLF 文本元素还包括文本布局框架运行时共享库​​ (TLF RSL)。RSL 在您的主要电影之前预先加载一个预加载器

这意味着您的 swf 不再是加载的第一部电影,因此它使 FlashVars 无法访问。

Adrian Parr 有一篇关于此的优秀博客文章:http: //www.adrianparr.com/? p=137

于 2012-01-05T02:01:57.050 回答
-1

您是否尝试在调试模式下运行它。该声明

this[i] = obj[i];

正在例外。除非您的课程是动态的,否则您不能在 Actionscript 中执行此操作。评论了这条线,它起作用了。

于 2012-01-05T09:38:39.817 回答