我在加载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。你能告诉我我哪里做错了吗?
谢谢!
发布于 2012-01-05 10:01:57
好的,这是Flash中的TLF文本组件的一个'bug‘。在文档中包括TLF文本元素还包括文本布局框架运行时共享库(TLF RSL)。RSL在你的主电影之前预先加载了一个预加载器
这意味着你的swf不再是第一个加载的电影,所以它使得FlashVars不可访问。
关于这一点,禤浩焯·帕尔有一个精彩的博客文章:http://www.adrianparr.com/?p=137
发布于 2013-02-20 17:28:43
一种解决办法是嵌入整个TLF运行时,而不是从外部加载它。执行此操作的步骤在this how-to by adobe中介绍
要编译已发布的SWF文件中的TLF ActionScript资源,请执行以下操作:
从默认链接菜单中选择合并到代码中的
这显然会显著增加swf文件的大小。
发布于 2012-01-05 17:38:40
您是否尝试在调试模式下运行此程序。这句话
this[i] = obj[i];是个例外。除非您的类是动态的,否则无法在Actionscript中执行此操作。注释了这一行,并且它起作用了。
https://stackoverflow.com/questions/8733285
复制相似问题