2012-07-27 83 views
0

我只是想将一些参数从HTML传递给ActionScript 3.0。 当我搜索它,我看到,我可以用我可以用[Flash变数]将变量从HTML传递到Flash ActionScript 3.0

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

,可以从AS3访问这些paramters:

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) 

我做错了吗?任何想法?

注:

我的HTML其中呼吁SWF文件:

<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达到这些paramters这样的:

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

回答

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两次,一次为<object>,一次为<embed>,与其他事物一样,如allowFullScreen

+0

好吧,我尽量不工作...仍然得到“空” – Novalis 2012-07-27 10:56:13

+0

好了,问题是在闪存CS4生成的HTML ...我编写HTML manuely ......所以我可以访问参数... – Novalis 2012-07-27 13:55:49

+0

好。正如loxxy在他的回答中所说的,我通常会推荐使用swfobject,而不是手动执行object/embed html。 – 2012-07-27 14:16:51

2

我会评论使用对象标签而不是嵌入,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);