2011-06-24 92 views
0

我正在通过扩展UIComponent类来编写自定义Flex 4组件。不幸的是,我无法让组件响应任何种类的鼠标事件。我试过将mouseEnabled设置为true是组件,并且在父级(stage对象)中将mouseChildren设置为true。在自定义Flex组件中未触发的事件

看来无论我做什么,我的点击事件都可以从舞台中检测到,但不能与组件一起检测。

这里是我的组件类:

package components { 

    import mx.core.UIComponent; 

    public class DrawCanvas extends UIComponent { 

     public function DrawCanvas() { 
      super(); 
     } 
    } 
} 

这里是我的WindowedApplication文件:

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         xmlns:cmp="components.*" 
         minWidth="800" minHeight="600" 
         applicationComplete="init()"> 

    <fx:Script> 
     <![CDATA[ 
      private function init():void { 
       myBox.addEventListener(MouseEvent.CLICK, reportClick); 
       stage.addEventListener(MouseEvent.CLICK, stageClick); 
      } 

      private function stageClick(event:MouseEvent):void { 
       trace(event.target, event.currentTarget); 
       trace("Stage Click", event.localX, event.localY); 
      } 

      private function reportClick(event:MouseEvent):void { 
       trace(event.target, event.currentTarget); 
       trace("Click", event.localX, event.localY); 
      } 
     ]]> 
    </fx:Script> 

     <cmp:DrawCanvas id="myBox" 
        height="100%" width="100%"/> 

</s:WindowedApplication> 

由于提前,

山姆

回答

2

组件只能分派鼠标事件只有通过可见的部分。至于你的组件没有任何内容,它不能触发鼠标事件。试试像这样:

package components { 

    import mx.core.UIComponent; 

    public class DrawCanvas extends UIComponent { 

     public function DrawCanvas() { 
      super(); 
     } 

     override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
     { 
      super.updateDisplayList(unscaledWidth, unscaledHeight); 
      graphics.clear(); 
      graphics.beginFill(0xFFFFFF, 0); 
      graphics.drawRect(0, 0, unscaledWidth, unscaledHeight); 
      graphics.endFill(); 
     } 
    } 
} 
+0

果然,这解决了这个问题。再次感谢! – Sam

相关问题