将变量从 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】:如果您还没有在<embed>
标记中指定flashvars
,可能会导致参数丢失,即为空。
<param>
标记与<object>
标记一起使用,由呈现/执行<object>
标记的浏览器读取,但不由使用<embed>
标记的浏览器读取。您示例中的 <embed>
标记已缩短,就像我在这里一样,所以也许您已经拥有它,但您还需要在其中包含 flashvars
,例如:
<embed src="CustomVideoPlayer.swf" flashvars="serverUrl=rtmp://X.X.X.X/live&streamName=Camera.stream" ...>
换句话说,您需要包含两次 flashvars,一次用于<object>
,一次用于<embed>
,与allowFullScreen
等其他内容一样。
【讨论】:
嗯,问题出在 Flash CS4 生成的 HTML...我手动编写了 html...所以我可以访问参数... 好。正如 loxxy 在他的回答中所说,我通常会建议使用 swfobject 而不是手动执行 object/embed html。以上是关于将变量从 HTML 传递到 Flash ActionScript 3.0的主要内容,如果未能解决你的问题,请参考以下文章
将变量从 PHP/MySQL 传递给 actionscript 以播放音频文件