2011-06-08 136 views
0

我正在使用FlashVars在swf中传递参数,但它不起作用。Flex - 如何将参数传递给swf

下面是HTML代码:

<noscript> 
     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="tpc"> 
      <param name="movie" value="tpc.swf" /> 
      <param name="quality" value="high" /> 
      <param name="bgcolor" value="#ffffff" /> 
      <param name="allowScriptAccess" value="sameDomain" /> 
      <param name="allowFullScreen" value="true" /> 
      <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye"> 

      <!--[if !IE]>--> 
      <object type="application/x-shockwave-flash" data="tpc.swf" width="100%" height="100%"> 
       <param name="quality" value="high" /> 
       <param name="bgcolor" value="#ffffff" /> 
       <param name="allowScriptAccess" value="sameDomain" /> 
       <param name="allowFullScreen" value="true" /> 
       **<param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye">** 

      <!--<![endif]--> 
      <!--[if gte IE 6]>--> 
       <p> 
        Either scripts and active content are not permitted to run or Adobe Flash Player version 
        10.0.0 or greater is not installed. 
       </p> 
      <!--<![endif]--> 
       <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> 
      <!--[if !IE]>--> 
      </object> 
      <!--<![endif]--> 
     </object> 
    </noscript>  

这里是的.mxml文件代码:

  var keyStr:String; 
      var valueStr:String; 

      var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters; 

      var length:int = 0; 

      for (keyStr in paramObj) { 
       length++; 
      } 

      if (length == 0) { 
       ta.appendText("Length is zero so below is the dummy data:\n"); 
       paramObj = {test:"Test", test2:"Test2"}; 
      } 

      for (keyStr in paramObj) { 
       valueStr = String(paramObj[keyStr]); 
       ta.appendText("\t" + keyStr + ":\t" + valueStr + "\n"); 
      } 

回答

3

第一,请不要使用该HTML。使用swfobject将您的Flash swf嵌入到您的html中。 Adobe更容易做和支持。

其次,您没有正确访问变量,可能尝试访问变量太快。在尝试访问应用程序的creationComplete事件之前,您需要等待。有一个真正的好tutorial on everything I just said on Adobe Help

+0

+1它的工作......我只在init()函数中访问这些变量,它在应用程序初始化时被调用... applicationComplete =“init()” – 2011-06-08 18:24:55

0

<object>尝试添加<embed>这样的:

<embed src="file.swf?myVariable=Hello%20World&mySecondVariable=Goodbye" width="" height="" /> 
+0

它不起作用 – 2011-06-08 03:31:03

+0

是否有任何错误?发生了什么是不正确的? – Marty 2011-06-08 03:32:17

+0

'paramObj'的长度是0 – 2011-06-08 03:39:03