有没有办法从ActionScript检查循环参数的值?

时间:2010-11-24 19:08:51

标签: flash actionscript-3 actionscript

可以将许多参数添加到objectembed标记以嵌入Flash视频。大多数都列在here。其中一些可以通过ActionScript以编程方式访问/更改(例如,<param name="scale">可以通过stage.scaleMode访问)。

是否可以访问/更改loop参数的值?

编辑添加:我知道flashvars,这不是我要问的。

2 个答案:

答案 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();覆盖。