2014-04-10 2 views
0

다른 사용자가 동일한 문제가있는 경우 프로젝트에 거의 영향을 미치지 않지만 원인을 찾지 않아도됩니다.Starling Touch 이벤트에서 예기치 않은 오류가 발생했습니다.

btn.addEventListener(TouchEvent.TOUCH,function(e:TouchEvent){ 
      var t:Touch = e.getTouch(stage); 

      if(t.phase == TouchPhase.ENDED) 
      { 

        resetBall(); 

      } 
     }); 

을하지만 언젠가 경우 어떻게 든 통해 내 마우스를 가져가 내 프로젝트 객체 중지, 다음과 같은 오류가 발생합니다 :

모든 것은 touchevents에 대한 리스너를 추가하는 동안 잘 작동합니다. 터치 객체가 getTouch()에서 반환 된 경우

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at Function/Game.as$0:anonymous()[...src\Game.as:45] 
    at starling.events::EventDispatcher/invokeEvent()[/Users/redge/Dropbox/Development/starling/starling/src/starling/events/EventDispatcher.as:141] 
    at starling.events::TouchEvent/dispatch()[/Users/redge/Dropbox/Development/starling/starling/src/starling/events/TouchEvent.as:174] 
    at starling.events::TouchProcessor/processTouches()[/Users/redge/Dropbox/Development/starling/starling/src/starling/events/TouchProcessor.as:186] 
    at starling.events::TouchProcessor/advanceTime()[/Users/redge/Dropbox/Development/starling/starling/src/starling/events/TouchProcessor.as:135] 
    at starling.core::Starling/advanceTime()[/Users/redge/Dropbox/Development/starling/starling/src/starling/core/Starling.as:379] 
    at starling.core::Starling/nextFrame()[/Users/redge/Dropbox/Development/starling/starling/src/starling/core/Starling.as:369] 
    at starling.core::Starling/onEnterFrame()[/Users/redge/Dropbox/Development/starling/starling/src/starling/core/Starling.as:568] 
+0

무엇 라인 (45)이 정확히 포함? – Cherniv

+0

if (t.phase == TouchPhase.ENDED) – justnajm

+0

그리고'e.getTouch (e.target)'또는'e.getTouch (btn)'을 시도하면 어떻게 될까요? – Cherniv

답변

0

표준은 phase 속성에 대한 확인하기 전에 null입니다 확인하는 것입니다. 찌르레기 위키에서

var touch:Touch = e.getTouch(stage); 
if (touch) { 
    if(touch.phase == TouchPhase.ENDED) { 
     resetBall(); 
    } 
} 

:

private function onTouch(event:TouchEvent):void 
{ 
    var touch:Touch = event.getTouch(this, TouchPhase.BEGAN); 
    if (touch) 
    { 
     var localPos:Point = touch.getLocation(this); 
     trace("Touched object at position: " + localPos); 
    } 
} 

http://wiki.starling-framework.org/manual/touch_events

관련 문제