日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Flex與Flexswf如何實現(xiàn)通訊

本文和大家重點討論一下Flex通訊系列---Flex與Flex swf,要實現(xiàn)Flex與Flex swf相互間的通訊,我們需要引入SystemManager接口實現(xiàn)。

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

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

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

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

是的,要實現(xiàn)Flex調(diào)用嵌套Flex swf,主要我們在Flex swf中為Flex打開方便之門就可以了,也就是設(shè)計一個publicfunction,難道這還不夠簡易?下面說一下簡單的實現(xiàn):

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

 
 
 
  1. viewplaincopytoclipboardprint?

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

 
 
 
  1. viewplaincopytoclipboardprint?
  2. publicfunctioninvokeByOutsideFlex():void{
  3. trace("Success...");
  4. }
  5. publicfunctioninvokeByOutsideFlex():void{
  6. trace("Success...");
  7. }

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

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

◆Flex swfLoader-content

content屬性

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

Application-application

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

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

4、如在Main.mxml中加入:

 
 
 
  1. viewplaincopytoclipboardprint?
  2. publicfunctioninvokeByInsideFlex swf():void{
  3. trace("Igetit...");
  4. }
  5. publicfunctioninvokeByInsideFlex swf():void{
  6. trace("Igetit...");
  7. }

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

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

 接下來我們需要看一下兩個屬性:

◆UIComponent:

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

源代碼下載:準備上傳

parent屬性

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

◆DisplayObject:

root屬性

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

application屬性

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


分享文章:Flex與Flexswf如何實現(xiàn)通訊
URL鏈接:http://m.5511xx.com/article/cossdgo.html