【问题标题】:Passing Variables from HTML to Flash ActionScript 3.0将变量从 HTML 传递到 Flash ActionScript 3.0
【发布时间】:2012-07-25 22:27:15
【问题描述】:

我只想将一些参数从 HTML 传递给 ActionScript 3.0。 当我搜索它时,我发现我可以使用 I CAN USE [ flashvars ]

 <param name="flashvars" value="serverUrl=rtmp://X.X.X.X/live&streamName=Camera.stream">

并且可以从 AS3 访问这些参数:

var serverUrl : String =  root.loaderInfo.parameters.serverUrl;
var serverStreamName : String = root.loaderInfo.parameters.serverStreamName;

但是当我尝试这个时,我看到 serverUrl 和 serverStreamName 为空:

var txt:TextField = new TextField(); 
txt.text =" URL: " + serverUrl ;
addChild(txt)

我做错了什么?有什么想法吗?

注意:

我调用 SWF 文件的 HTML:

<noscript>
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="..."....>
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="allowFullScreen" value="false" />
    <param name="movie" value="CustomVideoPlayer.swf" />
    <param name="flashvars" value="serverUrl=rtmp://X.X.X.X/live&streamName=Camera.stream">
    <param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />   
    <embed src="CustomVideoPlayer.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="CustomVideoPlayer" ...>
    </object>
</noscript>

并尝试像这样从 AS3 中获取这些参数:

var serverUrl : String =  root.loaderInfo.parameters.serverUrl;
var serverStreamName : String = root.loaderInfo.parameters.serverStreamName;

【问题讨论】:

    标签: html actionscript-3 actionscript flash


    【解决方案1】:

    我会评论使用对象标签而不是嵌入,EMBED vs. OBJECT

    但是现在有了 HTML5 对嵌入的所有支持,我不确定。

    无论如何,我总是更喜欢使用像swfobjecct 这样的流行库,只是为了方便和安全。

    话虽如此,这就是您使用 swfobject 和 Javascript 的方式:

     var flashVars = {};
     flashVars.parameter1 = "abc";
     flashVars.parameter2 = "bbc";    
    
     swfobject.embedSWF("myMovie.swf", "myDIV", "720", "600", "9.0.0", "expressInstall.swf", flashVars, {}, {}, swfLoadComplete);
    

    【讨论】:

      【解决方案2】:

      如果您还没有在&lt;embed&gt; 标记中指定flashvars,可能会导致参数丢失,即为空。

      &lt;param&gt; 标记与&lt;object&gt; 标记一起使用,由呈现/执行&lt;object&gt; 标记的浏览器读取,但不由使用&lt;embed&gt; 标记的浏览器读取。您示例中的 &lt;embed&gt; 标记已缩短,就像我在这里一样,所以也许您已经拥有它,但您还需要在其中包含 flashvars,例如:

      <embed src="CustomVideoPlayer.swf" flashvars="serverUrl=rtmp://X.X.X.X/live&streamName=Camera.stream" ...>
      

      换句话说,您需要包含两次 flashvars,一次用于&lt;object&gt;,一次用于&lt;embed&gt;,与allowFullScreen 等其他内容一样。

      【讨论】:

      • 嗯,问题出在 Flash CS4 生成的 HTML...我手动编写了 html...所以我可以访问参数...
      • 好。正如 loxxy 在他的回答中所说,我通常会建议使用 swfobject 而不是手动执行 object/embed html。
      猜你喜欢
      • 2011-11-05
      • 2019-01-06
      • 2013-05-28
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2021-12-29
      相关资源
      最近更新 更多