溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Flex與Flex swf如何實(shí)現(xiàn)通訊

發(fā)布時(shí)間:2021-11-24 10:04:11 來(lái)源:億速云 閱讀:146 作者:柒染 欄目:編程語(yǔ)言

Flex與Flex swf如何實(shí)現(xiàn)通訊,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

Flex通訊系列---Flex與Flex swf

這里講述的是在FlexApplication中嵌套一個(gè)Flex swf,然后實(shí)現(xiàn)Flex與Flex swf相互間的通訊。我們需要引入SystemManager接口實(shí)現(xiàn)。

下面我們來(lái)看一下《Flex3參考手冊(cè)》對(duì)SystemManager的描述,你大約就知道怎么回事,使用里面現(xiàn)成的屬性和方法就可以實(shí)現(xiàn)Flex與Flex swf的通訊啦。

每個(gè)應(yīng)用程序都包含一個(gè)SystemManager。如果應(yīng)用程序窗口的大小發(fā)生更改(您無(wú)法在應(yīng)用程序中更改其大小,只能通過(guò)與操作系統(tǒng)窗口或?yàn)g覽器交互來(lái)進(jìn)行更改),則SystemManager會(huì)發(fā)送一個(gè)事件。它是應(yīng)用程序中所有可顯示項(xiàng)目(例如mx.core.Application主實(shí)例以及所有彈出窗口、工具提示、光標(biāo)等)的父項(xiàng)。任何以SystemManager作為父項(xiàng)的對(duì)象都將被視為“***”窗口,就連工具提示和光標(biāo)也是如此。

是的,要實(shí)現(xiàn)Flex調(diào)用嵌套Flex swf,主要我們?cè)贔lex swf中為Flex打開(kāi)方便之門(mén)就可以了,也就是設(shè)計(jì)一個(gè)publicfunction,難道這還不夠簡(jiǎn)易?下面說(shuō)一下簡(jiǎn)單的實(shí)現(xiàn):

1、在FlexApplication(如命名為Main.mxml)中通過(guò)Flex swfLoader標(biāo)簽加載Flex swf文件:

viewplaincopytoclipboardprint?  <mx:Flex swfLoaderid="Flex swfLoader"source="Game01.Flex swf"/> <mx:Flex swfLoaderid="Flex swfLoader"source="Game01.Flex swf"/>

2、在Game01.mxml中設(shè)計(jì)一個(gè)publicfunction。如:

viewplaincopytoclipboardprint?  publicfunctioninvokeByOutsideFlex():void{  trace("Success...");  }  publicfunctioninvokeByOutsideFlex():void{  trace("Success...");  }

3、在Main.mxml中調(diào)用:

viewplaincopytoclipboardprint?
Object(Object(Flex swfLoader.content).application).invokeByOutsideFlex();
//其實(shí)第二個(gè)Object具體是SystemManager對(duì)象,所以也可以寫(xiě)作
Object(SystemManager(Flex swfLoader.content).application).invokeByOutsideFlex();
Object(Object(Flex swfLoader.content).application).invokeByOutsideFlex();
//其實(shí)第二個(gè)Object具體是SystemManager對(duì)象,所以也可以寫(xiě)作
Object(SystemManager(Flex swfLoader.content).application).invokeByOutsideFlex();
我們先來(lái)了解兩個(gè)內(nèi)容,一個(gè)事Flex swfLoader的content屬性,另一個(gè)是Application.application。

◆Flex swfLoader-content

content屬性

content:DisplayObject[]
此屬性包含表示在Flex swfLoader控件中加載的內(nèi)容的對(duì)象。

Application-application

很明顯,通過(guò)這樣簡(jiǎn)單的兩句話就可以獲取到FlexApplication層次下的public方法。

好了,至此已經(jīng)可以實(shí)現(xiàn)了Flex向Flex swf通訊了。那么Flex swf怎么可以反過(guò)來(lái)跟FLEX說(shuō)話呢?原理是一樣的,F(xiàn)lex開(kāi)放一些function,然后Flex swf就可以直接調(diào)用那些function了。

4、如在Main.mxml中加入:

viewplaincopytoclipboardprint?  publicfunctioninvokeByInsideFlex swf():void{  trace("Igetit...");  }  publicfunctioninvokeByInsideFlex swf():void{  trace("Igetit...");  }

5、回去Game01.mxml可以直接通過(guò)如下代碼調(diào)用:

viewplaincopytoclipboardprint?  Object(SystemManager(this.parent.parent.root).application).invokeByInsideFlex swf();  //SystemManager可以改成Object,多態(tài)特性  Object(SystemManager(this.parent.parent.root).application).invokeByInsideFlex swf();  //SystemManager可以改成Object,多態(tài)特性

接下來(lái)我們需要看一下兩個(gè)屬性:

◆UIComponent:

這個(gè)層次我是通過(guò)Debug對(duì)象層層查找出來(lái)的,層次不同當(dāng)然需要改一下了,甚至可以直接跳到幾層,直接到最外層,這個(gè)自己再去查查,呵呵。

源代碼下載:準(zhǔn)備上傳

parent屬性

parent:DisplayObjectContainer[]
此組件的父容器或組件。只有UIComponent對(duì)象應(yīng)該具有父屬性。非UIComponent對(duì)象應(yīng)該使用其它屬性引用其所屬對(duì)象。一般而言,非UIComponent對(duì)象使用owner屬性引用其所屬對(duì)象。

◆DisplayObject:

root屬性

root:DisplayObject[]
對(duì)于加載的Flex swf文件中的顯示對(duì)象,root屬性是此Flex swf文件所表示的顯示列表樹(shù)結(jié)構(gòu)部分中的***顯示對(duì)象。對(duì)于代表已加載圖像文件的位圖對(duì)象,root屬性就是位圖對(duì)象本身。對(duì)于***個(gè)加載的Flex swf文件的主類的實(shí)例,root屬性就是顯示對(duì)象本身。Stage對(duì)象的root屬性是Stage對(duì)象本身。對(duì)于任何未添加到顯示列表的顯示對(duì)象,root屬性設(shè)置為null,除非它已添加到符合以下條件的顯示對(duì)象容器:不在顯示列表中,但屬于已加載Flex swf文件中***顯示對(duì)象的子級(jí)。

application屬性

application:Object[]
應(yīng)用程序的引用。
通常,Application對(duì)象可能存在層次結(jié)構(gòu),因?yàn)锳pplication可以使用Flex swfLoader控件動(dòng)態(tài)加載其它Application??赏ㄟ^(guò)UIComponent的parentApplication屬性訪問(wèn)UIComponent所在的子Application,并可以在層次結(jié)構(gòu)中向上瀏覽到Application。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI