2011-06-24 8 views
0

UIComponentクラスを拡張してカスタムFlex 4コンポーネントを作成する際に、最初にスタブします。残念ながら、私はコンポーネントがどのような種類のマウスイベントにも応答することはできません。私はtrueにmouseEnabledを設定しようとしたコンポーネントは、親(ステージオブジェクト)でtrueにmouseChildrenを設定するだけでなく、コンポーネントです。カスタムFlexコンポーネントでイベントが発生しない

私は何でもそうですが、私のクリックイベントはステージから検出できますが、コンポーネントでは検出できません。ここで

は私のコンポーネントクラスです:事前に

<?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

Componentがマウスイベントのみを送出できます:

package components { 

    import mx.core.UIComponent; 

    public class DrawCanvas extends UIComponent { 

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

そして、ここでは私のWindowedApplicationファイルです目に見える部分だけでコンポーネントにコンテンツがない限り、マウスイベントを発生させることはできません。

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

関連する問題