반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

Detecting Object and Screen Taps

Posted on

. Written by



이전에 touch 이벤트를 이용해서 Corona SDK에서 어떻게 detect touches를 하는지 보여드렸었습니다. 아실 지 모르겠지만 quick touch나 quick tap을 감지하는 훨씬 간단한 이벤트가 있습니다. 이 기능은 다양한 시나리오나 게임 또는 테스트 등에 아주 유용하게 사용될 수 있습니다.


The “tap” event


Tap은 touch와는 다르게 한번 손가락이 움직이면 이 이벤트는 cancelled 됩니다. 이것은 quick touch로도 설명될 수 있죠. 이런 경우는 multiple quick tap들을 detect 해야 될 경우에 필요합니다. (예를 들어 특정 객체나 스크린에 double-tap을 하는 경우)


Event Listener


오브젝트에 이벤트 리스너를 추가하기 전에 (혹은 global Runtime object에 추가하기 전에) 여러분은 tap이 일어나면 어떤 일이 발생하는지에 대해서 정하셔야 합니다. 다른 이벤트들과 마찬가지로 이 부분에서 이벤트 리스너 함수가 나오게 되거든요. 아래 예제가 있습니다.


local function onImageTap( self, event )
    print( self.id .. " was tapped." )
end


그 다음으로는 객체에 tap 이벤트 리스너를 추가하시면 됩니다.


local object = display.newImage( "image.png" )
object.id = "myObject1"
object.touch = onImageTap  -- the function we created previously
object:addEventListener( "tap" )

아래는 똑같은 기능을 하는 건데요. 객체가 아니라 전체 스크린에서 tap 이벤트를 감지할 겁니다.


local function onScreenTap( event )
    print( "The screen was tapped." )
end
Runtime:addEventListener( "tap", onScreenTap )


touch 이벤트와 비교한다면  리스너 함수 부분이 훨씬 간단한 걸 느끼실 겁니다. 왜냐하면 이벤트 phase 부분을 체크할 필요가 없으니까요. 그리고 focus나 return value 등도 체크할 필요가 없습니다. 이렇기 때문에 여러분은 간단하게 테스트를 해야 될 때 touch event를 적용하기 이전에 이 기능을 활용하실 수 있습니다.






event.numTaps


이 tap 이벤트를 touch 이벤트 대신에 사용하시게 되면 event.numTaps 프로퍼티를 통해서 몇번의 탭이 일어났는지를 쉽게 알아낼 수 있습니다. touch event로 구현하려면 훨씬 더 복잡하게 해야 되는 부분이죠.

대개 체크하는 touch 수는 1이나 2 입니다. 하지만 tap이 충분히 빠르다면 3도 체크할 수 있겠죠. 짐작하시겠지만 이 기능은 double-tap을 감지하는데 사용됩니다. 예를 들어 double-tap 했을 경우에만 어떤 동작을 하는 객체가 있다면 이 event.numTaps를 사용하시면 좋을겁니다. 아래 예제 처럼요.


local object = display.newImage( "image.png" )

function object:tap( event )
    if (event.numTaps >= 2 ) then
        print( "The object was double-tapped." )
    end
end

object:addEventListener( "tap" )


또한 여러분은 tap event가 일어난 위치를 알기 위해 event.x, event.y 를 사용할 수 있습니다.

좀 더 자세한 내용은 tap event documentation 를 참조하세요.



반응형