溫馨提示×

溫馨提示×

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

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

Flex和Flash之間的關系是什么

發布時間:2021-12-14 14:09:24 來源:億速云 閱讀:295 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Flex和Flash之間的關系是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Flex Flash關系分析

1、Flex應用程序的生命周期

Flex應用就其根本上講就是Flash應用,只不過其是基于FlexFramework(由ActionScript寫就)開發的。Flex應用程序的根對象的是SystemManager(不是我們在flex應用上看到的Application根元素),繼承自flash.dispaly.MovieClip—flashplayerdisplaytype,MovieClip是一種支持timeline基本元素幀frame的對象,在FlexFramework中SystemManager是特殊的,含有兩幀(其他component都是一幀的),分別是preloader和真正的Application,preloader幀可以迅速下載下來并用于顯示應用下載進度,一旦Flex應用的SystemManager實例進入第二幀,將創建Flex主應用application實例并賦予本身的屬性application(在進入第二幀之前是null),自此application(flex主應用)的內部生命周期、事件開始運作:

◆preinitialize:application已經實例化但尚未創建任何childcomponent
◆initialize:已經創建childcomponent但對其進行布局(layout)
◆creationComplete:application已經完成實例化并完成所有childcomponent的布局

SystemManager有一個topLevelSystemManager對象,指向一個SystemManager實例,是所有當前在flashplayer運行的任何東西的根(root),如果flex被作為主應用加載到flashplayer則上述屬性將指向其本身(self-refrencing),但當flex應用是被另一flex應用載入的,其自身的SystmenManager的topLevelSystemManager屬性則不是自引用了,而是指向其父應用的SystemManager實例。所有UIComponent的子類都有一個systemManager屬性指向應用的SystemManager實例,在被SystemManger實例監聽的component的事件發生冒泡時,其將擁有事件處理鏈上***的處理權。

2、Flashpalyer和Framwork的區別

Flashplayer是Flex應用和flash應用的運行環境,兩應用對其擁有完全平等的操作權(通過Flashplayer提供的API),兩應用形成的.swf文件在flashplayer中是同樣的表現,不同的不是應用的內容而是其各自的創建方式。Flex的Framework在開發和運行之間為應用提供了一層抽象,Flex應用編譯時會將必要的framworklibrary編譯進.swf文件(同樣影響應用文件的大小等),主要的flashplayerclass當然不會被編譯到.swf中,因為他們已經存在于flashplayer中了,最終形成與flash應用同樣的flashplayer可以理解的指令。
關于flashplayerclass和flexframework的區分很方便,前者的class以flash開頭,如flash.net.URLLoader,而后者則以mx開頭,如mx.controls.Button

3、動態載入另外的flex應用

<mx:SWFLoadersource=”src/*.swf”/>
Swfloader的content屬性指向被載入的flex應用的SystemManager實例(其application屬性指向被載入felx應用的Application實例),swfloader加載、初始化被載入flex應用時會dispatch出init事件,可與其中監聽被載入flex應用的SystemManager實例的ApplicationComplete事件,事件發生時被載入content的Application對象方可以引用
與inithandler中event.target.content.addEventListener(FlexEvent.APPLICATION_COMPLETE,func);
與applicationCompleteHandler中event.target.application.method&hellip;

4、理解應用程序域(applicationdomain)

一個應用程序domain(類似于.net的appdoamin)中有flex應用的相關類定義、資源等,被載入的新flex應用可以存在于一個全新的、隔離的domain中(占額外的內存資源)、可以存在于當前domain的子doamin中(共享父domain的資源、類定義,須注意類定義被取代的情況)、也可以直接存在與當前doamin中(同樣須注意類定義沖突),如runtimesharedlibrary。
代碼中實現這三種方式的應用(主要應用到flash.system.LoaderContext、flash.display.Loader或flash.net.URLLoader、flash.system.ApplicationDomain)

varcontext:LoaderContext=newLoaderContext();  context.applicationDomain=newApplicationDomain(ApplicationDomain.currentDomain);//載入作為子domain  context.applicationDomain=newApplicationDomain();//載入作為全新domain  context.applicationDomain=ApplicationDomain.currentDomain;//載入當前domain  varrequest:URLRequest=newURLRequest("RuntimeLoadingExample.swf");  varloader:Loader=newLoader();  loader.load(request,context);

5、關于preloader

Preloader是一個輕量級的類,在systemManager的***幀被實例化,preloader會dispatch出一系列的事件,由progressbar監聽實現loading界面,一旦應用進入第二幀待application初始化后會借由systemmanager通知preloader初始化進度,preloader通知systemmanager其準備待刪除

Preloader的事件dispatch:

progress  Indicatesdownloadprogress  complete  Indicatesthatthedownloadiscomplete  rslError  Indicatesthataruntimesharedlibrarycouldnotload  rslProgress  Indicatesthedownloadprogressforaruntimesharedlibrary  rslComplete  Indicatesthatthedownloadiscompleteforruntimesharedlibraries  initProgress  Indicatesthattheapplicationisinitializing  initComplete  Indicatesthattheapplicationhasinitialized

如此,preloader可以定制化了。

感謝各位的閱讀!關于“Flex和Flash之間的關系是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女