中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flex與Flex swf如何實現通訊

發布時間:2021-11-24 10:04:11 來源:億速云 閱讀:146 作者:柒染 欄目:編程語言

Flex與Flex swf如何實現通訊,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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

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

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

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

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

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

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

2、在Game01.mxml中設計一個publicfunction。如:

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

3、在Main.mxml中調用:

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();
我們先來了解兩個內容,一個事Flex swfLoader的content屬性,另一個是Application.application。

◆Flex swfLoader-content

content屬性

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

Application-application

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

好了,至此已經可以實現了Flex向Flex swf通訊了。那么Flex swf怎么可以反過來跟FLEX說話呢?原理是一樣的,Flex開放一些function,然后Flex swf就可以直接調用那些function了。

4、如在Main.mxml中加入:

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

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

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

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

◆UIComponent:

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

源代碼下載:準備上傳

parent屬性

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

◆DisplayObject:

root屬性

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

application屬性

application:Object[]
應用程序的引用。
通常,Application對象可能存在層次結構,因為Application可以使用Flex swfLoader控件動態加載其它Application。可通過UIComponent的parentApplication屬性訪問UIComponent所在的子Application,并可以在層次結構中向上瀏覽到Application。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

穆棱市| 桂阳县| 淄博市| 西城区| 兴隆县| 军事| 云浮市| 武隆县| 都江堰市| 上犹县| 于田县| 宁明县| 本溪市| 博白县| 五家渠市| 林甸县| 仪陇县| 维西| 江源县| 洛南县| 视频| 成安县| 广南县| 玛纳斯县| 磴口县| 阿拉善盟| 阿鲁科尔沁旗| 罗源县| 体育| 武定县| 双流县| 吉水县| 衢州市| 台中县| 黑水县| 海口市| 山东| 卫辉市| 漳浦县| 华池县| 蒙城县|