欧美一级精品免费播放-亚洲精品久久久久久人妖-中文字幕一区二区精品在线-国产精品亚洲一区二区在 色天天综合色天天久久婷婷_日韩綜合网_精品国产香蕉伊思人在线_99视频国产在线观看播放

注冊(cè)|登錄

聯(lián)系電話:024-31891684  13390130939
沈陽(yáng)軟件公司--沈陽(yáng)軟件定制

沈陽(yáng)軟件開發(fā)_沈陽(yáng)軟件公司_沈陽(yáng)軟件定制/軟件/最新技術(shù)

Latest technology最新技術(shù)

AS3.0中addCallback用法

瀏覽量:7992

在AS3編程中,如果我們要JavaScript來調(diào)用AS3中的函數(shù),常用的方法就是使用ExternalInterface類中的addCallback方法。該方法官方解釋如下:將 ActionScript 方法注冊(cè)為可從容器調(diào)用。 成功調(diào)用 addCallBack() 后,容器中的 JavaScript 或 ActiveX 代碼可以調(diào)用在 Flash Player 中注冊(cè)的函數(shù)。

在AS3中,該方法的原始定義如下

public static function addCallback(functionName:String, closure:Function):void

他有2個(gè)參數(shù),第二個(gè)參數(shù)指的是AS3中需要調(diào)用的函數(shù)名,第一個(gè)參數(shù)則是JS中調(diào)用的函數(shù)名,我們看AS3中關(guān)于這個(gè)函數(shù)的使用幫助中有如下說明:

在包含 SWF 文件的 HTML 頁(yè)中,在該文件的 object 標(biāo)簽中設(shè)置以下參數(shù):

<param name="allowScriptAccess" value="always" />

在 SWF 文件中,添加以下 ActionScript:

flash.system.Security.allowDomain(sourceDomain )

這2個(gè)說明其實(shí)是為了解決安全沙箱的問題,但是實(shí)際使用中,我們常常還會(huì)遇到更加頭疼的問題。

比如AS3中有個(gè)函數(shù)叫

showMC(mc:MovieClip):void;

我們使用

ExternalInterface.addCallback("showMC" , jsshowMC) ;

來注冊(cè)一個(gè)外部接口函數(shù),ok,我們同樣設(shè)置allowScriptAccess為always和allowDomain(*),但是JS經(jīng)常還是會(huì)報(bào)錯(cuò):jsshowMC is not a Function,這是為什么呢?進(jìn)過多次試驗(yàn),原來才發(fā)現(xiàn),AS3中,如果需要使用addCallback函數(shù)來注冊(cè)外部函數(shù)接口,那么必須是當(dāng)前的swf完全加載完畢才能注冊(cè)成功,如果還在當(dāng)前swf加載的過程中就在JS中調(diào)用的話肯定會(huì)因?yàn)檎也坏胶瘮?shù)而報(bào)錯(cuò)。

解決辦法有幾個(gè),一個(gè)是swf盡可能的小,提高加載速度,當(dāng)然這個(gè)指標(biāo)不治本,那么,我們可以在JS中來判斷所調(diào)用的函數(shù)是否有效,如果所調(diào)用的函數(shù)未定義,那么我們就等待,比如我們可以用一個(gè)Timer:setTimeout("checkFuncName()",100);每隔100毫秒來調(diào)用checkFuncName檢測(cè)函數(shù)是否有效,checkFuncName里我們可以寫檢測(cè)函數(shù)是否是undefined,如果是就繼續(xù)循環(huán)。

沈陽(yáng)團(tuán)購(gòu)網(wǎng)|營(yíng)口網(wǎng)站制作|沈陽(yáng)軟件公司|軟件定制|網(wǎng)站建設(shè)|加盟易勢(shì)|提交問題