Flashvars无法加载

时间:2012-01-04 20:07:53

标签: flash actionscript-3 actionscript flashvars

将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。你能告诉我我做错了什么吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

一个解决方法是嵌入整个TLF运行时而不是外部加载它。这样做的步骤在this how-to by adobe

中描述
  

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

     
      
  • 选择文件&gt;发布设置。

  •   
  • 点击Flash标签。

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

  •   
  • 单击“库路径”选项卡。

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

  •   

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

答案 1 :(得分:0)

好的,这是Flash中带有TLF Text组件的'bug'。 在文档中包含TLF Text元素还包括Text Layout Framework运行时共享库​​(TLF RSL)。 RSL会在主电影之前添加一个预加载器

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

Adrian Parr有一篇关于此事的博客项目: http://www.adrianparr.com/?p=137

答案 2 :(得分:-1)

您是否尝试在调试模式下运行此功能。声明

this[i] = obj[i];

正在给予例外。除非您的类是动态的,否则您无法在Actionscript中执行此操作。评论该线,它的工作原理。