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

Flash 有没有办法从ActionScript检查循环参数的值?,flash,actionscript-3,actionscript,Flash,Actionscript 3,Actionscript,有许多参数可以添加到对象和嵌入标记中,以嵌入flash视频。大多数都列在清单上。其中一些可以通过ActionScript以编程方式访问/更改(例如,可以通过stage.scaleMode访问) 是否可以访问/更改循环参数的值 编辑添加:我知道FlashVar,这不是我要问的。网络的普遍共识是,不,你不能从Flash内部访问FlashVar/movie以外的参数 但是,至少在某些浏览器中,您可以从JavaScript访问参数——当然,您还可以使用外部接口在Flash和JavaScript之间进行交

有许多参数可以添加到
对象
嵌入
标记中,以嵌入flash视频。大多数都列在清单上。其中一些可以通过ActionScript以编程方式访问/更改(例如,
可以通过
stage.scaleMode
访问)


是否可以访问/更改
循环
参数的值


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

网络的普遍共识是,不,你不能从Flash内部访问FlashVar/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和对象/嵌入上启用脚本访问。

网络的普遍共识是:不,您不能从Flash内部访问除FlashVar/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和对象/嵌入上启用脚本访问。

“是否可以访问/更改
循环
参数的值(通过ActionScript)?”
简短回答:不用麻烦。

长答覆:

@Orbling的答案依赖于通过JavaScript进行检查,如果在添加嵌入式flash视频时添加或删除参数,理论上JavaScript可能处于不一致的状态

我想出了一个间接的方法来检查是否设置了播放或循环参数。仅当根视频中有两个或更多帧时,才能检测参数

第一帧

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');
}
第二帧

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只是一个静态对象,用于存储参数状态。如果
play
参数为真,视频将转到第2帧,该帧设置
playParam
值。如果
loop
参数为真,视频将返回到第1帧,该帧设置
loopParam

如果
play
为false,
loop
仍然可以使用
事件的一些奇特的步法来检测。输入_FRAME
,但在这一点上,继续检查可以被
play()覆盖的参数值是荒谬的
停止()

“是否可以访问/更改
循环
参数的值(通过ActionScript)?”
简短回答:不用麻烦。

长答覆:

@Orbling的答案依赖于通过JavaScript进行检查,如果在添加嵌入式flash视频时添加或删除参数,理论上JavaScript可能处于不一致的状态

我想出了一个间接的方法来检查是否设置了播放或循环参数。仅当根视频中有两个或更多帧时,才能检测参数

第一帧

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');
}
第二帧

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只是一个静态对象,用于存储参数状态。如果
play
参数为真,视频将转到第2帧,该帧设置
playParam
值。如果
loop
参数为真,视频将返回到第1帧,该帧设置
loopParam


如果
play
为false,
loop
仍然可以使用
事件的一些奇特的步法来检测。输入_FRAME
,但在这一点上,继续检查可以被
play()覆盖的参数值是荒谬的
停止()在第一帧或最后一帧。

我可能错了,但我90%确定AS没有等效的循环,因为它不需要。你想做什么,也许我可以给你指出正确的方向。我想弄清楚哪些参数可以访问,以保存我的程序。另外,我希望能够在一些不同的程序中使用flash的内置参数。我90%确信它们不能被直接访问。我可能错了,但我90%确信AS没有等效的循环——仅仅因为它不需要。你想做什么,也许我可以给你指出正确的方向。我想弄清楚哪些参数可以访问,以保存我的程序。另外,我希望能够在一些不同的程序中使用flash的内置参数。我90%确信它们不能直接访问。@gthmb嗯,我还没有测试过它,但我觉得这个原则很合理。JS位可以工作。相当典型的闪存没有直接访问自己的配置,我仍然不确定这是真的,似乎太愚蠢了。但是这是Flash…@gthmb我还没有测试过它,但是这个原理对我来说是合理的。JS位可以工作。相当典型的闪存没有直接访问自己的配置,我仍然不确定这是真的,似乎太愚蠢了。但这是闪光…一个明智的想法,虽然你不知道循环是否被设置,直到它循环。@Orbling准确,这就是为什么我给你赏金。是的,非常感谢。我的答案远非理想,但这是我唯一能找到的获取数据的方法。通过检测浏览器并知道如何在初始化后访问参数,可以避免不一致性缺陷。如果启用了默认的右键单击菜单,我相信可以更改循环,这可能是内部的,因此我只会在早期信任这些参数。这是一个明智的想法,尽管直到循环发生时,您才知道是否设置了循环。@Orbling正是,这就是为什么