2010-04-05 37 views
2

我有一個加載外部SWF,目前鏈接到同一個SWF中的按鈕中的ActionScript函數...從html鏈接調用AS3函數 - Javascript? PHP的? swfaddress?

function btnClick(event:MouseEvent):void{ 
SoundMixer.stopAll(); 
removeChild(loader); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded); 
loader.load(movieSWF) 
loader.x=Xpos 
loader.y=Ypos 
addChild(loader) 


} 


button.addEventListener(MouseEvent.CLICK,btnClick); 

我不知道是否有一種方法來調用一個鏈接。此功能swf所在的頁面。我猜javascript,php或swfaddress將是最有可能的方式,但我令人難以置信的所有這一切,所以我不知道從哪裏開始或如何去做。

任何幫助,將不勝感激。

回答

9

您正在尋找ExternalInterface.addCallback函數。這使您可以註冊一個函數,以便可以從JavaScript代碼向外調用它。

你的HTML可能是這樣的(其中'IDofSWF'是包含在頁面上的SWF元素的ID):

<a href="#" onclick="document.getElementById('IDofSWF').clicky()"> 
    Click to call btnClick in the SWF 
</a> 

在你的初始化代碼Flash中的以下內容:

import flash.external.ExternalInterface; 

// ... 

// This will allow JavaScript to call a function on the SWF named 'clicky'. It will execute the anonymous function passed as the second argument: 
ExternalInterface.addCallback('clicky', function() { 
    btnClick(null); 
}); 

請注意,您不會得到MouseEvent(我的示例將null作爲值傳遞給它),因爲事件處理程序是通過鼠標單擊手動(從JavaScript外部)而不是從SWF內部調用的。