将MouseEvent.CLICK添加到starling图像

时间:2013-05-07 08:47:08

标签: actionscript-3 flex starling-framework

我有一个容器有很多带滚动的图像,我添加TouchEvent.TOUCH作为事件监听器而不是MouseEvent.CLICK,因为starling不支持MouseEvent。 问题是,当我在图像之间导航时,它会监听TouchEvent,而我不需要这个?是否有任何解决方案而不是TouchEvenet

代码:

private function onComplete (event:flash.events.Event):void
    {
        bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
        var newImage:Image = Image.fromBitmap(Bitmap(LoaderInfo(event.target).content));
        newImage.height = 154;
        newImage.width = 180;
        addChild(newImage);
        newImage.addEventListener(starling.events.TouchEvent.TOUCH,image_clickHandler);
    }
    private function image_clickHandler(event:starling.events.TouchEvent):void
    {
        var touch:Touch = event.getTouch(stage);
        if (touch != null)
        {
            if (touch.phase == TouchPhase.BEGAN)
            {
                //some code
            }   
        }

    }

1 个答案:

答案 0 :(得分:4)

最好不要将事件监听器附加到场景中的每个对象上。您应该只将一个监听器附加到舞台上,然后再读取触摸事件的target属性。
这里的例子来自“产生椋鸟”一书:

private function onClick(e:TouchEvent):void
{
 var touches:Vector.<Touch> = e.getTouches(this);
 var clicked:DisplayObject = e.currentTarget as DisplayObject;
 if ( touches.length == 1 )
 {
  var touch:Touch = touches[0];   
  if ( touch.phase == TouchPhase.ENDED )
  {
   trace ( e.currentTarget, e.target );
  }
 }
}

此处currentTargetStagetarget为您的形象