0

我只想将一些参数从 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;
4

2 回答 2

2

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

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

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

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

 var flashVars = {};
 flashVars.parameter1 = "abc";
 flashVars.parameter2 = "bbc";    

 swfobject.embedSWF("myMovie.swf", "myDIV", "720", "600", "9.0.0", "expressInstall.swf", flashVars, {}, {}, swfLoadComplete);
于 2012-07-27T10:12:32.013 回答
0

可能导致参数丢失的一件事,即为空,是如果您还没有flashvars<embed>标记中指定。

标签与标签<param>一起使用<object>,由渲染/执行<object>标签的浏览器读取,而不是由使用<embed>标签的浏览器读取。你的例子中的<embed>标签被缩短了,就像我的这里一样,所以也许你已经有了它,但你还需要包括flashvars那里,比如:

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

换句话说,您需要将 flashvars 包含两次,一次 for<object>和一次 for <embed>,就像其他东西一样,例如allowFullScreen.

于 2012-07-27T10:37:55.340 回答