可能重複:
calling a Flash ExternalInterface with JavaScriptFlash和外部JavaScript
我有AS代碼的Flash文件。我想運行將會運行AS的函數的Javascript。例如:在AS中,我有一個名爲「loadXML」的函數。保存名爲「pawel」的SWF文件的對象(對象的ID)。我怎樣才能運行一個Javascript代碼,將運行「pawel」函數「loadXML」?我正在使用帶有AS 3的Flash 6.
可能重複:
calling a Flash ExternalInterface with JavaScriptFlash和外部JavaScript
我有AS代碼的Flash文件。我想運行將會運行AS的函數的Javascript。例如:在AS中,我有一個名爲「loadXML」的函數。保存名爲「pawel」的SWF文件的對象(對象的ID)。我怎樣才能運行一個Javascript代碼,將運行「pawel」函數「loadXML」?我正在使用帶有AS 3的Flash 6.
您應該使用ExternalInterface.addCallback()
方法。有關詳細信息,請參見http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#addCallback()。
我建議你檢查這個http://www.redcodelabs.com/2012/04/calling-actionscript-method-from-javascript/它有運行示例和as3/js代碼。
我相信這裏的目標是發送swf(已編譯外部.as文件)服務器上某處xml文件的位置,以便swf可以編譯,解析和創建一些內容。
我已經做了很多次了,使用了閃存變量,這對你也很有用。將.swf嵌入網頁時,可以通過js或html發送閃存變量,或者使用php動態發送。一旦我有我的fla工作與硬編碼變量完美(如xml)我然後添加閃存變量代碼的頭部,並做了一些小的調整fla - 它通常打破fla在flash中正常運行(因爲它是現在取決於這些外部變量)
不管怎麼說,這裏是我做的怎麼樣我的Flash變量(還有其他的方式,值得好好研究的谷歌搜索)
import flash.net.*;
var flashVars:Object = new Object();
flashVars = this.loaderInfo.parameters;
var xmlVal;
for (var item:String in flashVars)
{
switch (item)
{
case "xmlLocation" :
xmlVal = String(flashVars[item]);
break;
}
}
下面是它發送的值的javascript:
<script type="text/javascript">
//flashObj
var flashvars = {};
flashvars.xmlLocation = "http://google.com/myXML.xml";
var params = {wmode:"transparent"};
var attributes = {};
swfobject.embedSWF("images/banner.swf", "yourSliderId", "175", "300", "9.0.0", false, flashvars, params, attributes);
</script>
這是使用S WFObject(一個開放的API flash嵌入js庫)來處理swf嵌入。我更喜歡它,因爲如果你看看上面的代碼,你可以閱讀並理解它,默認的方式很難閱讀,編輯和理解。
如果你只需要XML然後你就完成了,這將適用於你。如果您仍然需要說打到使用javascript「下一步」或「上一個」按鈕,請參閱本網站的文章,我相信這可以進一步幫助你: http://arrixlive.wordpress.com/2005/03/25/javascript-in-love-with-flash-control-swf-from-javascript/
檢查[ExternalInterface的(HTTP:// help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html)類。您將需要通過'addCallBack()'方法註冊該JS函數。 – inhan