2010-08-26 16 views
0

繼續我以前的帖子...並非常感謝回覆.... 這是我正在嘗試解決的真實情況。 只需從javascript調用swf將swf移動到另一個時間範圍即可。使用javascript移動到swf框架的問題

AS3

Import flash.external.ExternalInterface; 

function moveOn (frame:int) : void 
{ 
gotoAndPlay (frame); 
} 
ExternalInterface.addCallback("myjsFunction", moveOn); 

JS

<script language="JavaScript"> 
function sendtoSwf (frame){ 
MyMovie.myjsFunction(frame); 
} 
</script> 
... 
<object id="MyMovie"...> 
... 
<param name="allowScriptAccess" value="always" /> 
.... 
<embed name="MyMovie".../> 
</object> 

HTML JS觸發

<a href onclick=」javascript : sendtoSwf(25);」> click here </a> 

如果有人能請澄清,因爲我只想觸發來自JS SWF,做我也許不是需要... addCallback(...)行嗎?它應該只是一個...打電話(...)? 我還沒有相當的草擬內部接口的想法呢。 在我的HTML點擊觸發器Im試圖傳遞一個整數值,這是我希望瑞士法郎移動到的實際框架,我不知道如果觸發器應該鏈接到「sendtoSwf」函數或「myjsFunction」...我是否需要在js中引用移動框架的as3函數的實際名稱?(即moveOn) 任何澄清都將非常感謝。感謝預期。 Ed

回答

0

你一定需要addCallback函數,但是你還需要檢查Javascript是否準備好與Actionscript進行通信。看看文檔,這個例子是相當詳細的,應該給你你需要的信息。

檢查外部界面類 http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

+0

感謝帕特里克 我設法得到它的工作。添加了一些代碼來檢查瀏覽器類型並重新編寫代碼。 – Edbro 2010-08-26 19:35:36

1

任何有興趣,這是什麼工作:

<script type="text/javascript"> 
//checking which browser used 
function getFlashMovieObject(movieName){ 
if (window.document[movieName]){ 
    return window.document[movieName]; 
} 
if (navigator.appName.indexOf("Microsoft Internet")==-1){ 
    if (document.embeds && document.embeds[movieName]) 
     return document.embeds[movieName]; 
} 
else{ 
    return document.getElementById(movieName); 
} 
} 
//code that sends frame no to flash 
function sendtoSwf(numb){ 
var flashMovie=getFlashMovieObject("myFlashMovie"); 
flashMovie.sendToFlash(numb); 
} 
</script> 

和動作腳本

import flash.external.ExternalInterface; 
ExternalInterface.addCallback("sendtoFlash", getFromJavaScript); 
function getFromJavaScript(frame:int):void { 
gotoAndPlay(frame); 
}