1.6.在MXML中添加事件
2024-04-27 13:51:41
供稿:網友
1.6.1.問題
我想在MXML中添加事件器來MXML文件中的子對象所發出的事件。
1.6.2.解決辦法
傳遞一個方法名給組件的event標簽并發送一個event對象(可選)。
1.6.3.討論
當一個行為發生時,Flex組件便會發出相應事件信號,比如用戶點擊一個按鈕, 選擇列表框的某一項或者數據讀取。要這些被廣播出去的事件,最簡單的方法就是添加一個函數引用,該函數將處理這個事件,例如:
+展開
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400"
height="300">
<mx:Script>
<![CDATA[
private function buttonClick():void{
trace("Button has been clicked");
}
]]>
</mx:Script>
<mx:Button click="buttonClick()" label="Click Me"/>
</mx:Canvas>
添加click="buttonClick()",當按鈕發出click事件時將調用buttonClick函數。
你還可以傳遞事件對象本身給這個函數,每次組件發出該事件時,組件也會發送Event類型的對象給它的處理函數,例如:
+展開
-XML
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400"
height="300">
<mx:Script>
<![CDATA[
private function buttonClick(event:Event):void{
trace(event.target.id);
if(event.target.id == "buttonOne"){
trace("button one was clicked")
}
else{
trace("button two was clicked")
}
}
]]>
</mx:Script>
<mx:Button click="buttonClick(event)" label="Click Me One" id="buttonOne"/>
<mx:Button click="buttonClick(event)" label="Click Me Two"
id="buttonTwo"/>
</mx:HBox>
通過事件偵聽器以偵聽的Event類型的對象,給事件偵聽器發送該事件并以不同的方式反饋,具體取決于指定的條件。在此示例中,響應該事件取決于事件來源。
Flex中的事件對象以及事件發送系統是一個非常重要的內容。所有事件都包含一個正在偵聽該事件時所使用的類型,如果該事件是click事件,那么子對象的click事件就會加入事件方法:
+展開
-XML
<mx:Button click="trace('I was clicked')"/>
用戶交互的通知,應用程序發送消息或定時發送給服務器,事件對象定義了一些任何函數都可以訪問的屬性,如下所示:
bubbles
指示事件是否是冒泡事件,即是否從已接收任何偵聽器進一步沿事件鏈向上重新發送該事件對象。
cancelable
指示該事件是否是可取消的。
currentTarget
處于活動進程的事件對象。
eventPhase
事件流的當前階段
Target
事件目標,即發出該事件的對象
Type
事件類型
你也可以在MXML中通過綁定標簽{}直接寫入事件處理語句。
+展開
-XML
<mx:Button click="{textComponent.text='You clicked the button'" label="Click Me"/>
<mx:Text id="textComponent"/>
當編譯這段代碼時,編譯器會創建一個函數,設置textComponent.text = 'You clicked the button'作為函數體的內容。這種寫法看起來不一樣,但是其結果都是一樣的:事件并執行代碼。
這種方法本身并沒有錯誤,但是如果處理的是復雜的事情而非簡單的設置一個屬性,定義一個函數會使你的代碼看起來清晰的多,且更易于閱讀和理解。