Flex中通过hasEventListener和willTrigger事件检测按钮控件是否监听某个特别事件(FlexEvent.BUTTON_DOWN)的例子

By Minidxer | August 21, 2008

接下来的例子演示了Flex中通过hasEventListener和willTrigger事件,检测按钮控件是否监听某个特别事件(本例中为:FlexEvent.BUTTON_DOWN)。

让我们先来看一下Demo可以右键View Source或点击这里察看源代码):


下面是完整代码(或点击这里察看):

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application name="Button_willTrigger_buttonDown_test"
  3.         xmlns:mx="http://www.adobe.com/2006/mxml"
  4.         layout="vertical"
  5.         verticalAlign="middle"
  6.         backgroundColor="white">
  7.  
  8.     <mx:Script>
  9.         <![CDATA[
  10.             import mx.controls.Alert;
  11.             import mx.events.FlexEvent;
  12.             import mx.utils.StringUtil;
  13.  
  14.             private function verify_click():void {
  15.                 var listener:Boolean = btn.hasEventListener(FlexEvent.BUTTON_DOWN);
  16.                 var trigger:Boolean = btn.willTrigger(FlexEvent.BUTTON_DOWN);
  17.                 var str:String = "hasEventListener() = {0}{1}willTrigger() = {2}";
  18.                 Alert.show(StringUtil.substitute(str, listener, "n", trigger));
  19.             }
  20.  
  21.             private function addEventListener_click():void {
  22.                 btn.addEventListener(FlexEvent.BUTTON_DOWN, btn_buttonDown);
  23.                 verify_click();
  24.             }
  25.  
  26.             private function removeEventListener_click():void {
  27.                 btn.removeEventListener(FlexEvent.BUTTON_DOWN, btn_buttonDown);
  28.                 verify_click();
  29.             }
  30.  
  31.             private function btn_buttonDown(evt:FlexEvent):void {
  32.                 Alert.show(evt.type);
  33.             }
  34.         ]]>
  35.     </mx:Script>
  36.  
  37.     <mx:ApplicationControlBar dock="true">
  38.         <mx:Button label="Verify listeners"
  39.                 click="verify_click();" />
  40.  
  41.         <mx:Spacer width="100%" />
  42.  
  43.         <mx:Button label="addEventListener()"
  44.                 click="addEventListener_click();" />
  45.         <mx:Button label="removeEventListener()"
  46.                 click="removeEventListener_click();" />
  47.     </mx:ApplicationControlBar>
  48.  
  49.     <mx:Button id="btn" label="Button" />
  50.  
  51. </mx:Application>
代码:Peter deHaan 翻译/整理/编译:中文Flex例子

Topics: Flex | No Comments » | Tags: , , ,

Search Posts