flash與js的通信的三種方法:
1.getURL("javascript:jsFunctionName()");
getURL是flash的一個(gè)全局函數(shù),作用是向?yàn)g覽器發(fā)送一個(gè)請(qǐng)求。熟悉js的人一定知道,向?yàn)g覽器
發(fā)送javascript:開(kāi)頭的請(qǐng)求,其實(shí)就是模擬了一個(gè)js的請(qǐng)求協(xié)議,瀏覽器會(huì)去在當(dāng)前環(huán)境中找指
定的function。
這種方法在flash早期版本比較流行。
2.fscommand("command","arguments");
fscommand的方法是flash中與播放器通訊的方法,通常向播放器,發(fā)送命令。
例如:fscommand("fullscreen",“true“);使播放器全屏顯示。
由于在web頁(yè)面中flash播放器也根js在同一環(huán)境下,所以可以通過(guò)播放器與js通訊。
“flashId”是播放器對(duì)象在web頁(yè)面中的id名字,這里假設(shè)就是flashId。
當(dāng)在as中調(diào)用fscommand命令時(shí),播放器會(huì)在web環(huán)境中找名為:
flashId_DoFSCommand("command",arguments)的方法,參數(shù)與as中fscommand的參數(shù)相同。
這里可以根據(jù)command的不同調(diào)用不同的方法,在js里
如:
if(command=="alert"){
alert(arguments);
}
3.flash8后提供了一個(gè)擴(kuò)展類,可以執(zhí)行對(duì)js和js對(duì)as的調(diào)用。
ExternalInterface.call("functionName",parameters);
functionName:js中的函數(shù)名稱。
parameters:傳過(guò)去的參數(shù),用逗號(hào)隔開(kāi)
簡(jiǎn)單的一句就可以實(shí)現(xiàn)對(duì)js方法的調(diào)用
同時(shí)這個(gè)類也可以實(shí)現(xiàn)js對(duì)as方法的調(diào)用,:)
ExternalInterface.addCallback('標(biāo)識(shí)名',parent,F(xiàn)unction);
這個(gè)方法就是把a(bǔ)s中的一個(gè)function注冊(cè)為一個(gè)“標(biāo)識(shí)名”,讓js可以通過(guò)這個(gè)標(biāo)識(shí)調(diào)用
標(biāo)識(shí)名:js中可以調(diào)用的名稱
parent:方法運(yùn)行環(huán)境也就是function中的this是誰(shuí)。有一點(diǎn)像js中的call(parent,)或者apply(parent)
的感覺(jué)
funtion :as 中的一個(gè)方法名稱,注意是Function對(duì)象,不是string型