2013-09-26 4 views
0

나는 CCLayerPanZoom 하위 클래스가 있습니다. 테스트 목적으로 화면 중간에 스프라이트를 놓았습니다.확대 된 레이어의 접촉 작업

if(CGRectContainsPoint(mySprite.boundingBox,touchedPoint)) 
    NSLog(@"Touch inside the sprite"); 

확대하기 전에 내가 출력 "스프라이트을 터치"를 얻을 수 있지만,이 확대 된 때 난 몰라 : 내가 전에 확대 한 후 다음의 시험을한다. 나는 비슷한 질문 (Getting different x and y coordinates for touched location on a zoomed view)을 물었고 나중에 알아 냈다. 하지만 내가 찾은 해결책은 확대/축소를 할 때가 아니라 패닝 할 때만 사용할 수 있습니다. 거기 밖으로 많은 게임이 있고 이것은 슈퍼 간단해야합니다 (적어도 나보다 먼저 완료). 확대하기 전에했던 것처럼 똑같은 지점을 가질 수 있어야합니다.

답변

0

나는이 문제에서 벗어나는 길을 찾기 위해 모든 낭비하는 시간을 후회한다. 모든 Cocos2D에서 convertToNodeSpace라는 깔끔하게 압축 된 메서드가 있다는 것이 밝혀졌습니다. 이동 거리와 확대 눈금을 고려하여 미친 계산을 할 필요가 없습니다. 난 그냥 다음과 같은했고, 모든 것이 자기 CCLayer의 서브 클래스 CCLayerPanZoom의 서브 클래스는 마법

touchedPoint=[self convertToNodeSpace: touchedPoint]; 

처럼 일했다. 그게 다야. 희망이 사람을 도움이됩니다.