добавить MouseEvent.CLICK к изображению скворца

у меня есть контейнер с множеством изображений со прокруткой, я добавляю 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
            }   
        }

    }

person Sameer H. Ibra    schedule 07.05.2013    source источник
comment
TouchEvent не вместо MouseEvent! Тот же TouchEvent работает и в браузере как обычный MouseEvent.   -  person Ivan Chernykh    schedule 07.05.2013
comment
я искал и нашел этот вопрос, для этого я пишу TouchEvent вместо Событие мыши   -  person Sameer H. Ibra    schedule 07.05.2013
comment
Ладно, это тот же класс. вы пробовали решение с stage?   -  person Ivan Chernykh    schedule 07.05.2013


Ответы (1)


Не рекомендуется прикреплять прослушиватели событий к каждому объекту на сцене . Вы должны прикрепить только один слушатель к этапу и после этого прочитать свойство 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 );
  }
 }
}

Здесь currentTarget это Stage , а target будет вашим изображением

person Ivan Chernykh    schedule 07.05.2013
comment
это работа сделана. Спасибо, если мне не нужно использовать TouchEvent, есть ли событие как starling.events.Event.TRIGGERED или MouseEvent.CLICKED? - person Sameer H. Ibra; 07.05.2013
comment
@SameerH.Ibra всегда добро пожаловать, я советую вам использовать книгу «Знакомство со скворцом» в качестве руководства пользователя. - person Ivan Chernykh; 07.05.2013