在SWF_Object的静态发布方法中是否有任何传递flashvars?

时间:2011-05-31 08:58:42

标签: flash actionscript-3 swfobject

我只是想知道使用静态发布方法SWF-Object,我们可以将flashvars传递给flash swf文件吗?

静态发布方法是

<head>
    <title>SWFObject 2 static publishing example page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript" src="embedswf/swfobject.js"></script>
    <script type="text/javascript">
    swfobject.registerObject("myId", "9.0.0", "embedswf/expressInstall.swf");
    </script>
</head>

<body>
    <div>   
        <object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="600" height="750" flashvars="var1=irfan" params="var1=irfan">
            <param name="movie" value="fish.swf" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="fish.swf" width="600" height="750" flashvars="var1=irfan" params="var1=irfan">
            <!--<![endif]-->
            <div>
                <h1>Alternative content</h1>
                <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
            </div>
            <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>
    </div>
</body>

但是flashvars和params没有传递给flash文件??

2 个答案:

答案 0 :(得分:3)

使用静态发布时,您需要包含<param>个节点(确保为每个对象包含一个副本):

<object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="600" height="750">
    <param name="movie" value="fish.swf" />
    <param name="flashvars" value="var1=irfan&var2=whatever" />

    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="fish.swf" width="600" height="750">
       <param name="flashvars" value="var1=irfan&var2=whatever" />
       <!--<![endif]-->

       <div>
          <h1>Alternative content</h1>
          <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
       </div>

    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

答案 1 :(得分:1)

我认为你问的是,如果你有一个使用SWFObject的静态嵌入式SWF ......这就是真正有意义的唯一方法。在这种情况下答案是肯定的。即使您的嵌入标记是使用PHP或其他东西动态生成的,您仍然可以传递flash变量。最简单的方法是下载并安装swfObject AIR应用程序以生成嵌入标记。

http://code.google.com/p/swfobject/downloads/list

你会看到flashvars的一个区域。它只是键/值对,因此创建一个键“keyname”并用您的数据填充它。然后在主类(或任何地方)内的AS3中,您可以像这样访问这些数据:

root.loaderInfo.parameters.keyname;

因此,假设您有一个名为“myUser”的密钥“userName”。你可以这样:

var uName:String = root.loaderInfo.parameters.userName;
trace(uName);

显然你会想要做一些基本的检查以确保这些对象存在而不是,但这几乎就是你访问flash变量的方式,并且恰好与访问SWF url上的GET变量的方式相同