multitouch display object 들을 위한 시뮬레이터 디버거를 사용하실 수 있습니다. tracking dot 중의 하나에서 touch 를 release 했을 때 이 dot 이 사라지지 않는걸 보셨을 겁니다. 이게 디버깅하기 아주 좋은 조건이거든요. 왜냐하면 touch 를 뗐어도 여러 touch point 가 있는 것처럼 데이터가 저장돼 있을 거거든요. 디버깅에는 좋지만 실제 앱을 이렇게 만드는 건 별로 유용하지는 않을 거에요. 계속 하얀 원이 쌓일 테니까요.
이 문제를 해결하시려면 rect:touch() function 의 ended phase 에서 해당 tracking dot들을 없애주면 됩니다. 일단 device 에서 running 하는지 여부를 코드의 시작 부분에서 변수에 저장해 두는 것에서부터 시작해야 되겠네요.
-- which environment are we running on? local isDevice = (system.getInfo("environment") == "device")
The isDevice variable will be true if the code is running on a real, physical device and it can be used to automatically remove the tracking dot when the user lifts their finger.
isDevice 변수는 이 앱이 실제 디바이스에서 구동될 경우 true 가 될 겁니다. 그러면 이 값이 true 일 경우에만 손가락이 떼어질 때 해당 tracking dot 을 없애버리면 되겠죠.
sample6.lua
if (e.phase == "moved") thenprint( e.phase, e.x, e.y )else -- ‘ended’ and ‘cancelled’ phasesprint( e.phase, e.x, e.y )if ( isDevice or e.numTaps == 2 ) then -- remove the tracking dot from the listlocal index = table.indexOf( rect.dots, e.target ) -- get index of dot to be removedtable.remove( rect.dots, index ) -- remove dot from liste.target:removeSelf() -- remove tracking dot from the screenendendreturn true
isDevice or e.numTaps == 2 가 있죠? 이렇게 함으로서 이미 rect:touch() function를 call 한 tap lisener 를 가지는 tracking dot을 가능하게 합니다. 그러면 시뮬레이터에서는 double tap 으로 tracking dot 을 remove 할 수 있도록 구현할 수 있습니다.
그 tap listener 는 이 코드가 시뮬레이터에서 돌아갈 때에만 동작하도록 해야합니다. 그래서 이 때 isDevice 변수를 다시 사용할 겁니다. 이 tap listener 는 tracking dot들을 생성하는 newTrackDot() 함수 안에 추가 됐습니다.
-- listen for a tap when running in the Simulatorfunction circle:tap(e)if (e.numTaps == 2) thene.parent = rect -- set the parentrect:touch(e) -- call touch to remove the tracking dotendreturn trueend-- only attach tap listener in the simulatorif (not isDevice) thencircle:addEventListener("tap")end
|
Note that we also:
우리는 두개의 tap 을 체크해서 double tap 일 경우에만 tracking dot을 remove 할 겁니다.
그리고 touch 함수안에 했던 대로 .parent property를 세팅합니다.
이 코드가 시뮬레이터에서 동작할 경우에만 해당 tap listener를 attach 합니다.
'Corona SDK > Corona Doc' 카테고리의 다른 글
Pinch Zoom Rotate 구현하기 - 11/11 - (0) | 2013.02.14 |
---|---|
Pinch Zoom Rotate 구현하기 - 10/11 - (0) | 2013.02.14 |
Pinch Zoom Rotate 구현하기 - 9/11 - (0) | 2013.02.14 |
Pinch Zoom Rotate 구현하기 - 8/11 - (0) | 2013.02.14 |
Pinch Zoom Rotate 구현하기 - 7/11 - (0) | 2013.02.12 |
Pinch Zoom Rotate 구현하기 - 5/11 - (0) | 2013.02.09 |
Pinch Zoom Rotate 구현하기 - 4/11 - (0) | 2013.02.01 |
Pinch Zoom Rotate 구현하기 - 3/11 - (0) | 2013.01.29 |
Pinch Zoom Rotate 구현하기 - 2/11 - (0) | 2013.01.29 |
Pinch Zoom Rotate 구현하기 - 1/11 - (0) | 2013.01.26 |