2013-05-07 2 views
2

컨테이너에 스크롤이 포함 된 이미지가 많습니다. MouseEvent.CLICK 대신 TouchEvent.TOUCH을 이벤트 리스너로 추가합니다. 이는 starling이 MouseEvent을 지원하지 않기 때문입니다. 문제는 내가 이미지를 탐색 할 때 TouchEvent에 수신 대기하지만이 작업이 필요하지 않습니다. TouchEvenet 대신 해결책이 있습니까?MouseEvent.CLICK를 starling 이미지에 추가합니다.

코드 :

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

    } 
+0

는'TouchEvent' 대신 MouseEvent''이 아닌 이미지가 될 것입니다! 똑같은'TouchEvent'도 일반적인'MouseEvent'처럼 브라우저에서 작동합니다. – Cherniv

+0

나는이 [질문] (http://forum.starling-framework.org/topic/mouse-events)을 검색하고 발견했다. 왜냐하면 TouchEvent가 MouseEvent 대신에 쓰여지고 있기 때문이다. –

+0

좋습니다. "같은 클래스"입니다. 당신은 '무대'로 해결책을 시도 했습니까? – Cherniv

답변

4

그것은 현장에 마다 객체를 이벤트 리스너를 부착하지 않는 좋은 방법입니다. 당신은 청취자 1 명을 붙이고 그 후에 터치 이벤트의 target 속성을 읽어야합니다. 여기
은 "Inroducing 찌르레기"책에서 예를 들면 다음과 같습니다

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); 
    } 
} 
} 

, currentTargetStage이며, target

+0

작업이 완료되었습니다. 감사합니다. TouchEvent를 사용할 필요가 없다면 starling.events.Event.TRIGGERED 또는 MouseEvent.CLICKED와 같은 이벤트가 있습니까? –

+0

@ SameerH.Ibra, http://wiki.starling-framework.org/manual/event_handling – Cherniv

+0

@ SameerH.Ibra 항상 환영합니다. "Starling 소개"책을 사용자 설명서로 사용하십시오. – Cherniv

관련 문제