我只是想从HTML传递一些参数到ActionScript 3.0。 当我搜索它时,我看到我可以使用我可以使用[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是null:
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到达那些参数:
var serverUrl : String = root.loaderInfo.parameters.serverUrl;
var serverStreamName : String = root.loaderInfo.parameters.serverStreamName;
答案 0 :(得分:2)
我会评论使用object标记而不是embed,EMBED vs. OBJECT
但是现在有了HTML5嵌入的所有支持,我不确定。
无论是哪种情况,我总是喜欢使用像swfobjecct这样的流行图书馆,只是为了方便而使用。保持安全。
话虽如此,这就是你用swfobject&amp; Javascript:
var flashVars = {};
flashVars.parameter1 = "abc";
flashVars.parameter2 = "bbc";
swfobject.embedSWF("myMovie.swf", "myDIV", "720", "600", "9.0.0", "expressInstall.swf", flashVars, {}, {}, swfLoadComplete);
答案 1 :(得分:0)
如果您还未在flashvars
标记中指定<embed>
,则可能导致参数丢失的一件事是null。
<param>
标记与<object>
标记一起使用,由呈现/执行<object>
标记的浏览器读取,而不是由使用{<embed>
标记的浏览器读取1}}标签。您的示例中的<embed>
标记已缩短,就像我在这里一样,所以也许您已经拥有它,但您还需要包含flashvars
,例如:
<embed src="CustomVideoPlayer.swf" flashvars="serverUrl=rtmp://X.X.X.X/live&streamName=Camera.stream" ...>
换句话说,您需要包含两次flashvars,一次用于<object>
,一次用于<embed>
,与allowFullScreen
等其他内容一样。