自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入剖析Flex事件機制

開發(fā) 后端
本文向大家介紹一下Flex事件機制的概念,每個事件對象中都包括事件類型(type)和事件源(target),便于event listener知道該事件的類型以及是誰拋出這樣的事件。

本文和大家重點討論一下Flex事件機制,首先我們來看一下Flex的概念,F(xiàn)lex是響應(yīng)RIA(富客戶網(wǎng)絡(luò)應(yīng)用)而出現(xiàn)的,F(xiàn)lex試圖通過提供一個程序員們已經(jīng)熟知的工作流和編程模型,讓程序員比從前更快更簡單地開發(fā)動畫及RIA應(yīng)用。

Flex簡介

Flex是響應(yīng)RIA(富客戶網(wǎng)絡(luò)應(yīng)用)而出現(xiàn)的,F(xiàn)lex試圖通過提供一個程序員們已經(jīng)熟知的工作流和編程模型,讓程序員比從前更快更簡單地開發(fā)動畫及RIA應(yīng)用。在多層式開發(fā)模型中,F(xiàn)lex應(yīng)用屬于表現(xiàn)層。Flex的語言和文件結(jié)構(gòu)也試圖把應(yīng)用程序的邏輯從設(shè)計中分離出來。

Flex最重要的兩項技術(shù)是ActionScript和MXML,其中ActionScript到現(xiàn)在已經(jīng)發(fā)展成了一門功能強大的面向?qū)ο笳Z言,目前常用的是ActionScript 3;而MXML是一個可以讓你在Adobe Flex中布局用戶界面組件的一種XML語言, 描述了反映內(nèi)容與功能的用戶界面,通過MXML,編程人員無需對Flash有太多的了解就可以開發(fā)出用戶體驗很好的flash應(yīng)用。

安裝Flex builder

用戶首先需要到Adobe公司的Flex網(wǎng)站下載http://www.adobe.com/products/Flex/,F(xiàn)lex Builder是收費的,但我們可以下載其中的試用版本,F(xiàn)lex Builder的現(xiàn)行版本為Flex Builder3。

安裝Flex Builder可有好幾種方式。

***種:直接安裝Flex Builder到目標(biāo)目錄下即可使用;

第二種:將Flex Builder作為eclipse插件安裝到用戶的eclipse安裝目錄下,然后將Flex Builder目錄下features和plugins中的文件全數(shù)拷貝eclipse的相應(yīng)目錄下,若我們需要借助MyEclipse來開發(fā)Flex應(yīng)用(確實有這樣的需要,以后會講到),則需要往MyEclipse下的features和plugins目錄進行同樣的拷貝操作。

Flex事件機制

Flex事件中的基本概念

event objects(事件對象):所有的事件對象都是flash.events.Event或者其子類。比如說鼠標(biāo)事件MouseEvent,計時器事件TimerEvent。每個事件對象中都包括事件類型(type)和事件源(target),便于event listener知道該事件的類型以及是誰拋出這樣的事件。簡單的理解,事件對象就是ActionScript中的各種事件類型的對象。
    event dispatchers(事件源):是事件發(fā)起的主體。所有的dispatcher都是EventDispatcher或其子類。事件觸發(fā)源必須提供API讓listener進行對該事件的注冊(register)。簡單的理解,事件源就是一個控件。
    event listeners(事件監(jiān)聽器):在AS 3.0中它往往表現(xiàn)為一個函數(shù)。我們必須為每個特殊的事件和事件源注冊一個監(jiān)聽器,當(dāng)事件發(fā)生的時候,事件源(dispatcher)會通知該監(jiān)聽器去處理制定的事件。簡單的理解,監(jiān)聽器就是一個函數(shù)。

◆注冊監(jiān)聽器

在AS 3.0中可以通過下面的語法格式進行注冊。

  1. dispatcher.addEventListener(eventName, listener);  

當(dāng)然在Flex中還有另外一種格式,在mxml文件中對一個控件的事件直接制定一個處理函數(shù),如

  1. <mx:Button label="TestClick" click="clickHandler()"/> 

事件階段

Flex事件機制中我們把事件觸發(fā)源分為兩類:一類是那些顯示在界面中的元素拋出的事件,一類是那些不在界面中顯示的元素拋出的事件。很簡單,舉個例子:***類如URLLoader對象去load圖片或其他資源所拋出的如complete事件,就屬于***類。界面上的一個按鈕所拋出的click事件就是第二類,它會觸發(fā)一個事件流,引發(fā)一系列的事件,它又分三個階段:捕獲(capture),執(zhí)行(target) 和冒泡(bubble),姑且這樣表達這三個階段。

◆捕獲階段(capture)

在這個階段,F(xiàn)lash Player會去查找事件的觸發(fā)源,它是通過根顯示元素(root display object)逐層向下尋蹤,直到找到事件的發(fā)起源頭,如你在button上click后,F(xiàn)lash Player找到的事該button對象。在這個階段監(jiān)視器(listener)默認(rèn)是不會收到任何消息的(默認(rèn)只在target和bubble階段收到消息)。

如果你想在捕獲階段讓listener收到消息并有所動作,那么你可以在注冊的時候改變第三個參數(shù)為true,如下面的方法:object.addEventListener(MouseEvent.CLICK, onClick, true);

該階段聽起來很陌生,事實上它很少使用。但它卻在事件流中扮演很重要的角色。它可以在事件到達子元素(child elements)之前被application捕獲,當(dāng)然也就可以阻 止事件到達子元素。

◆目標(biāo)執(zhí)行階段(target)

在這個階段是事件的執(zhí)行階段,也就是我們常用的用來處理事件流的代碼。

◆冒泡階段(bubble)

***的這個階段其實就是***個階段的逆向過程。它就是在事件代碼執(zhí)行完畢后通過子元素逐級向父元素發(fā)出該事件,一直到根元素。在這個階段你不需要特別的為監(jiān)聽器指定什么,你只要正常的注冊事件就可以了。監(jiān)聽器會在該階段收到通知。但前提是該事件是能夠bubble的。

◆垃圾回收

Flash Player是通過引用計數(shù)器(reference counting)以及標(biāo)記與清除(mark and sweep)來實現(xiàn)垃圾回收的。

引用計數(shù)器簡單的講就是給每個對象分配的技術(shù)器,一旦該對象的計數(shù)器為0時,就表示該對象可能不再被使用,可以安全的清除了。它的弊端就是不能解決循環(huán)引用問題,一旦出現(xiàn)循環(huán)引用,就不能通過該方法進行垃圾回收。

而標(biāo)記與清除(mark and sweep)就是為了解決循環(huán)引用問題的。它是通過在程序中遍歷每個活動的、可到達的節(jié)點,一旦發(fā)現(xiàn)一些節(jié)點是處在活動節(jié)點之外的,就被認(rèn)為不再有用,就可以被回收了。

這兩種Flex事件機制是聯(lián)合運行在垃圾回收過程中來保證正確回收資源。但他們并不能回收程序錯誤導(dǎo)致的垃圾。而監(jiān)聽器的注冊就最容易導(dǎo)致這個問題的發(fā)生。

【編輯推薦】

  1. 技術(shù)分享 用FlexBuilder創(chuàng)建Flex項目
  2. Flex基礎(chǔ) 創(chuàng)建***個Flex項目
  3. 解析Flex事件執(zhí)行流程
  4. FlexBuilder3.0與Eclipse3.4的***結(jié)合
  5. 學(xué)習(xí)筆記 FlexBuilder2.0中如何使用基于Lists的控件 

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-08-09 16:01:37

Flex字體

2010-08-12 15:35:44

Flex事件機制

2010-08-06 09:45:50

Flex事件機制

2010-08-06 10:03:42

Flex事件

2010-08-12 16:10:44

Flex應(yīng)用程序

2010-08-13 09:54:23

Flex字體

2010-08-10 13:58:00

Flex性能測試

2010-08-03 16:21:54

FlexFlash

2010-08-06 15:20:25

Flex Builde

2010-08-04 08:42:28

Flex和Flash

2023-11-01 08:22:07

Spring發(fā)布器源對象

2010-07-29 10:33:59

Flex鍵盤事件

2010-08-04 14:07:59

Flex事件機制

2010-08-12 11:29:01

Flex組件

2010-08-13 13:56:02

Flex事件機制

2020-11-20 07:55:55

Linux內(nèi)核映射

2010-08-06 09:56:06

Flex事件機制

2010-09-17 12:39:51

JAVA反射機制

2021-08-16 07:26:42

服務(wù)訂閱機制

2010-08-03 13:47:26

Flex程序員
點贊
收藏

51CTO技術(shù)棧公眾號