2013-05-09 23 views
1

我有一个组中有许多不同的图形基元。如果我点击组,我可以在MouseEvent(event).currentTarget中获得对它的引用。但是我怎么知道我是否点击过图形原语?如何查找在组中单击的图形基元

例如代码:

<?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:Script> 
     <![CDATA[ 
      protected function group1_mouseDownHandler(event:MouseEvent):void { 
       trace("event target="+ event.target); 
       // traces the group 
      } 
     ]]> 
    </fx:Script> 


    <s:Group width="500" height="500" horizontalCenter="0" verticalCenter="0" 
      mouseDown="group1_mouseDownHandler(event)" 
      mouseEnabledWhereTransparent="true"> 


     <s:Rect x="10" width="100" height="100" radiusX="10" radiusY="10"> 
      <s:fill> 
       <s:SolidColor color="#ff0000"/> 
      </s:fill> 
     </s:Rect> 

     <s:Ellipse x="150" width="100" height="100"> 
      <s:fill> 
       <s:SolidColor color="#ff0000"/> 
      </s:fill> 
     </s:Ellipse> 

    </s:Group> 
</s:Application> 

回答

1

在包spark.primitives的类不是从InteractiveObject继承,它们将不调度鼠标事件。 将它们添加到不同的组,一对一。并将听众添加到组中。

+0

这是我第一次想到的。尽管这可能会导致过多的组/组件,从而可能会影响应用的效率。可以根据鼠标点击x和y事件以及形状的位置做一些计算。 – JeffryHouser 2013-05-10 02:17:10

+0

这是一种可能性,但像Reboog说的那样,它可能会影响应用效率。我正在寻找一个使用命中测试或循环显示图形元素并检查x和y位置的示例。我也没有这样做,这是我发布这个问题的原因。 :) – 2013-05-12 00:48:49

+0

如果您将所有内容添加到一个组中,则点击测试没有用处。检查x和y可以做到这一点,但是你需要大量的计算。 – lipbb 2013-05-13 02:00:03

相关问题