2010-11-24 56 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();在第一或最後一幀被覆蓋的參數檢查值來進行檢測。

相關問題