可以将许多参数添加到object
和embed
标记以嵌入Flash视频。大多数都列在here。其中一些可以通过ActionScript以编程方式访问/更改(例如,<param name="scale">
可以通过stage.scaleMode
访问)。
是否可以访问/更改loop
参数的值?
编辑添加:我知道flashvars,这不是我要问的。
答案 0 :(得分:4)
一般的净识别是不,你不能从Flash内部访问flashvars / movie以外的参数。
但是,您可以在某些浏览器中访问JavaScript中的参数 - 当然,您可以使用外部设置Flash和JavaScript之间的接口。
也许是一个javascript例程:
function getParam(paramName) {
return $('#flashid param[name=' + paramName + ']').val();
}
与Flash中的方法一起使用:
import flash.external.ExternalInterface;
function getParam(paramName:String):String {
return String(ExternalInterface.call("getParam", paramName));
}
显然,确保在SWF和object / embed上启用脚本访问。
答案 1 :(得分:1)
“可以访问/更改loop
参数的值(通过ActionScript)吗?”
简短回答: 不要打扰。
答案很长:
@ Orbling的答案依赖于通过JavaScript检查,如果在添加嵌入式Flash视频时添加或删除参数,理论上可能处于不一致状态。
我想了一个间接的方法来检查是否设置了播放或循环参数。只有在根视频中有两个或更多帧时才能检测到参数。
第一帧
if (temp.loadParams.playParam)
{
temp.loadParams.loopParam = true;
//uses external interface to log to the console (essentially the same as trace)
temp.say('temp: looped');
stop();
}
第二帧
if (!temp.loadParams.playParam)
{
temp.loadParams.playParam = true;
temp.say('temp: played');
}
temp
是文档类名,loadParams只是存储param状态的静态对象。如果play
参数为真,则视频将转到第2帧,该第2帧设置playParam
值。如果loop
参数为真,则视频将返回到第1帧,该第1帧设置loopParam
值。
如果play
为false,仍然可以使用loop
使用一些花哨的步法来检测Event.ENTER_FRAME
,但此时,继续检查参数的值是非常荒谬的在第一帧或最后一帧中被play();
或stop();
覆盖。