Tuesday, August 21, 2007

HTML pass parameters to Flash AS3


<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="Example" width="100%" height="100%"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="Example.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#dddddd" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="FlashVars" value="foo=1&bar=2" />
<embed src="Example.swf"
quality="high"
bgcolor="#dddddd"
width="50%"
height="50%"
name="Example"
align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"
FlashVars="foo=1&bar=2"
>
</embed>
</object>

param中的FlashVars可以传参数给IE中的Flash(其他参数也是,如宽高),embed中的FlashVars可以传参数给Firefox中的Flash(其他参数也是,如宽高)。
AS3中可以这样接收传进来的参数,如

var foo:String = root.loaderInfo.parameters.foo;
var request:URLRequest = new URLRequest("http://localdomain/get.php?foo=" + foo);
var loader:URLLoader = new URLLoader();
loader.load(request);

这里如果get.php是个中转页,则需要设置cache无效,不然第一次重定向有效,后面的会不生效了(这里有个恶心的地方,Firefox只要在这个中转页上加了就可以每次刷新重定向,IE则需要在重定向目标页面也要加上这个头信息说明Cache无效才能每次刷新也重定向生效)。不过这个对于静态页面写了META标签也是不行。
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

No comments :