[Cocos2D 09.03]02. 주요클래스의 메소드

2010. 9. 3. 13:59IPhone/Cocos2D

1.Director

 convertCoordinate - UIKit 좌표를 OpenGL좌표로 변환한다. 터치 좌표를 현재 레이아웃에 맞게 변환 할 때 유용하다.

userFastDirector - 메인 루프 호출을 빠르게 한다. 이 메서드를 사용하기 위해서는 다른 Director의 메서드 보다 가장 먼저 호출되도록 해야 한다. 보통의 Director보다 훨신 빠르지만 배터리 소모도 훨신 많으므로 주의해서 사용해야 한다. 

sharedDirector - 클톤 Director클래스 인스턴를 리턴한다. 이 인스턴스는 애플리케이션을 통틀어서 하나의 인스턴스만을 서로 공유한다. 

 pushScence - 새로운 신을 큐에 추가한다. 신은 큐를 사용해서 관리되는데 이 큐에 새로운 장면을 추가할 때 사용한다. 이 메서드를 호출하여 새로운 신을 큐에 추가하면 추가한 신이 실행되게 된다. 너무 많은 신을 추가해서 메모리를 낭비하지 않도록 주의해야 한다.

popScene - 큐에서 신 하나를 뺀다. 만약 이전 신으로 복귀하길 원하는 경우에는 popScene을 호출하여 현재 보이는 신을 삭제하고 이전 신이 현재 신으로 실행하도록 하면 된다. 현재 실행되고 잇는 신이 있는 경우에는 이 메서드를 호출 할 수 있다.

replaceScene - 새로운 신으로 신을 교체한다. 이전 신은 교체시 종료된다. 이전에 실행되는 신이 있는 경우에만 호출하도록 해야한다. 

 handRankScene *hr=[handRankScene node];
 [[Director sharedDirector] replaceScene:hr];

pause - 실행되고 있는 신을 멈춘다. 화면은 그려진 상태이지만 그 상태 그대로 멈추게 된다. 내부 스케줄러는 휴면 상태가 되며 CPU동작을 최소화하기 위해서 이 상태에서는 4프레임으로 그리게 된다. 

resume - 스케줄 타이머를 다시 활성화 상태로 변경하고 중지했던 신을 다시 재개한다. 

startAnimation - 메인 루프를 다시 재개한다. 이전에 stopAnimation 호출로 멈추었을 때에만 이 메서드를 호출하도록 해야한다. 

stopAnimation - 애니메이션을 중지하고, 아무것도 그리지 않게 된다. 화면은 그대로 두고 단순히 중지 상태로 변경하고 싶은 경우라면 pause메서드를 호출한다. 

winSize - OpenGL 뷰의 크기를 얻어온다. 

setPixelFormat - 픽셀 포맷을 설정한다. 기본 픽셀 포맷은 kRGB565이고 설정할 수 있는 값들로는 kRGBA8와 kRGB565가 있다 픽셀 포맷 설정을 변경하려면 Director를 UIWindow/UIView 에 부착하기 전에 변경해야한다. 


2.Layer
레이어 클래스에서 터치 이벤트를 받는데 다음과 같은 메소드를 사용한다.
전에 터치를 사용할수 있도록 초기화 해줘야 하는데 isTouchEnabled의 속성값을 Yes로 바꾸어주면 터치를 사용할수 있다.

(BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
(BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
(BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

방법은 모두 같기에 하나만 예로 작성해보면..

 - (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{ 
          for(UITouch *touch in touches)
         {
               CGPoint location=[touch locationInView:[touch view]];
               CGPoint covertedPoint=[[Director sharedDirector] convertToGL:location];
         }
         return FALSE;
}