JS與Flash相互調用


flash使用的actionscript跟javascript是非常相通的,下面描述如何互相調用函數:
1:javascript調用flash中的函數
在flash的腳本中增加
代碼:import flash.external.ExternalInterface;
假定要調用的函數是hello,as代碼如下
代碼:function hello(){
   return "hello";
}
ExternalInterface.addCallback("hello", this, hello);
//第一個參數為導出函數名,第三個參數為as的函數名
這樣就可以在js中調用as的hello函數了
2:flash調用js的函數
ExternalInterface.call("hello2", "jacky");
//第一個參數是js的函數名,后面的是js函數的參數

3:如何互相調用

html代碼如下:
代碼:<object type="application/x-shockwave-flash" data="test.swf" width="525" height="390" name="test">
                        <param name="allowScriptAccess" value="sameDomain" />
                        <param name="movie" value="test.swf" />
                        <param name="quality" value="high" />
                        <param name="scale" value="noScale" />
                        <param name="wmode" value="transparent" />
                        
</object>

function callFromFlash() {
    var a=thisMovie("test").hello();
    alert(a);
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}





最近開發網站時遇到一個問題,如何與FLASH里的AS腳本進行交互?

需要在Flash里讀取網頁JavaScript里的值,用於控制兩個Flash協同顯示內容。

最后終於在Flash找到了ExternalInterface類,要求環境:AS 1.0,Flash Player 8.0以上

一、在網頁中通過JavaScript調用Flash里的ActionScript:
可以通過ExternalInterface的addCallback方法,在Flash里注冊一個可以供網頁上的JavaScript或ActiveX調用的方法,具體代碼如下:
程序代碼

import flash.external.*;
var methodName:String = "PlayBB";
var instance:Object = null;
var method:Function = playB;
var ws:Boolean = ExternalInterface.addCallback(methodName, instance, method);

在JavaScript中調用時,需要為Flash所在的Object標簽設置一個ID,並且設置allowScriptAccess屬性,示例代碼如下:
程序代碼

<object id="topFlash" name="topFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="686" height="101">
     <param name="movie" value="_top.swf" />
     <param name="quality" value="high" />
     <param name="allowScriptAccess" value="always" />
     <embed allowScriptAccess="always" src="_top.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="686" height="101"></embed>
</object>

網頁中的JavaScript具體的調用示例:
程序代碼

function thisMovie(movieName) {
     if (navigator.appName.indexOf("Microsoft") != -1) {
         return window[movieName]
     }
     else {
         return document[movieName]
     }
}
("topFlash").PlayBB();



二、在Flash的ActionScript中調用網頁里的JavaScript:
直接使用ExternalInterface的Call方法就可以了,示例代碼如下:
程序代碼

import flash.external.*;
var obj:Object = ExternalInterface.Call("JavaScript方法", "參數");

參數可以是任何As中的類型,在調用時Flash會自動封裝,多參數使用,分隔。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM