2010-11-24 117 views
0

有许多参数可以添加到objectembed标签中以嵌入Flash视频。大部分被列出here。其中一些可通过ActionScript以编程方式进行访问/更改(例如<param name="scale">可通过stage.scaleMode访问)。有没有办法从ActionScript中检查循环参数的值?

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

编辑补充:我知道关于flashvars,那不是我要求的。

+0

我可能是错的,但我90%确定AS没有等效的循环 - 只是因为它不需要循环。你想完成什么,也许我可以指出你正确的方向。 – Zevan 2010-11-24 23:09:19

+0

我试图找出哪些参数*可以*从AS访问,以保持我的程序[DRY](http://en.wikipedia.org/wiki/DRY)。另外,我希望能够在几个不同的程序中使用闪存的内置参数。我90%确定他们无法直接访问。 – zzzzBov 2010-11-26 17:23:30

+0

@downvoter,关心评论? – zzzzBov 2011-09-30 21:51:46

回答

4

一般的网络共识是否定的,你不能访问除flashvars/movie之外的参数。

但是,至少在某些浏览器中,您可以从JavaScript访问参数 - 当然,您也可以使用外部接口在Flash和JavaScript之间进行交互。

也许沿线的JavaScript例程:

function getParam(paramName) { 
    return $('#flashid param[name=' + paramName + ']').val(); 
} 

随着闪存的方法:

import flash.external.ExternalInterface; 

function getParam(paramName:String):String { 
    return String(ExternalInterface.call("getParam", paramName)); 
} 

显然确保脚本访问的SWF和对象/嵌入启用。

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

如果play是假的,loop仍然可以使用一些花式步法与Event.ENTER_FRAME,但在这一点上,这是荒谬的,继续为可以简单地通过play();stop();在第一或最后一帧被覆盖的参数检查值来进行检测。

相关问题