2012-04-17 4 views
0

구성 요소의 보이는 부분과 상호 작용할 때만 Flex 디스패치 마우스 이벤트를 만들 수 있습니까? 이 경우에는 행을 가리키면 이벤트가 전달되기를 원합니다.보이는 부분의 마우스 이벤트

<s:Group mouseOver="trace('over')"> 
    <s:Line xFrom="0" yFrom="0" xTo="100" yTo="100"> 
     <s:stroke> 
      <s:SolidColorStroke color="0" weight="3"/> 
     </s:stroke> 
    </s:Line> 
</s:Group> 

은 내가 투명 배경으로 캔버스를 채울 때까지 마우스 이벤트를 잡을 수 없을 때 내가 플렉스 3 시간 전에 문제가 있었다 기억한다. 하지만 지금은 반대의 문제가 있습니다. 도와 주셔서 감사합니다.

+0

이 = 거짓의 mouseChildren을 시도; –

답변

0

당신은 올바른 길을 가고 있습니다. 당신이 이미 수행 한 것처럼 불꽃 그래픽 프리미티브 (같은 Line)는 마우스 이벤트를 전달하지 않기 때문에

, 당신은 Group에서 Line 객체 또는 다른 컨테이너 클래스를 포장해야합니다.

선이 대각선이므로 Group의 경계 상자가 선보다 훨씬 큰 직사각형이라고 가정합니다.

가로 또는 세로 선을 그리면 Group의 경계 상자는 단지 Line의 크기 여야합니다. 그런 다음 Group을 회전하여 대각선을 만듭니다.

참고 : 임의의 X 값과 회전을 선택했습니다. 회전은 개체의 X/Y 좌표를 대체하는 효과가 있습니다. BasicLayout 이외의 다른 문자입니다. 따라서 x/y/rotation (및/또는 layout)을 조정하여 라인을 올바른 위치에 배치해야합니다.

<s:Group mouseOver="trace('over')" rotation="45"> 
    <s:Line x="100" yFrom="0" yTo="100"> 
     <s:stroke> 
      <s:SolidColorStroke color="0" weight="3"/> 
     </s:stroke> 
    </s:Line> 
</s:Group> 
0

당신은 코드 아래에 시도 할 수 있습니다 : -

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
    <fx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 

      private function rollOver(event:MouseEvent):void 
      { 
       Alert.show('over'); 
      } 

      private function drawLine():void 
      { 
       var g:Graphics = graphics; 

       graphComp.graphics.clear(); 
       var strokeColor:Number = getStyle("strokeColor"); 
       var shadowColor:Number = getStyle("shadowColor"); 

       graphComp.graphics.beginFill(strokeColor); 
       graphComp.graphics.drawRect(0, 0, 100, 1); 
       graphComp.graphics.endFill(); 

       graphComp.graphics.beginFill(shadowColor); 
       graphComp.graphics.drawRect(0, 1, 100, 1); 
       graphComp.graphics.endFill(); 
       graphComp.rotation = 45; 

      } 
     ]]> 
    </fx:Script> 
    <s:Group id="graphComp" x="100" y="100" creationComplete="drawLine()" rollOver="rollOver(event)"/> 

</s:Application>