将变量从 HTML 传递到 Flash ActionScript 3.0

Posted

技术标签:

【中文标题】将变量从 HTML 传递到 Flash ActionScript 3.0【英文标题】:Passing Variables from HTML to 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"   name="CustomVideoPlayer" ...>
    </object>
</noscript>

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

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

【问题讨论】:

【参考方案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。

以上是关于将变量从 HTML 传递到 Flash ActionScript 3.0的主要内容,如果未能解决你的问题,请参考以下文章

将字符串从 php 传递到 flash

将变量从 PHP/MySQL 传递给 actionscript 以播放音频文件

如何将对象从 windowSWF 传递到 JSFL?

将变量从 node.js 传递到 html

将变量从 PHP 传递到 javascript 并传递到 html 表单

如何将变量从外部 JavaScript 传递到 HTML 表单