본문 바로가기

Cocos2d

Cocos2d Android : 8장. cocos2d 몇가지 팁

반응형
//cocos2d 로 프로그래밍을 할때 주의 해야 할 점을 몇가지 써보았습니다
//잘못된 정보가 있으면 댓글 달아주세요^^;

 
1. schedule 시에는 public 타입으로 메소드를 불러준다

schedule("testMethod", 1f); 
            public void testMethod(float dt) {} 
 
2.  CGRect  사용법   : CGRect cRect = CGRect.make(시작x좌표 ,시작y좌표, 길이 ,높이);   

CCTexture2D t2d = CCTextureCache.sharedTextureCache().addImage("test.png"); 
CCSpriteFrame frame1 = CCSpriteFrame.frame(t2d,CGRect.make(0,0,150,150),CGPoint.ccp(0,0)); 
 //test.png에 좌측하단(0,0) 부터 150px*150px까지 이미지를 가져온다.

3. image 크기가 제대로 안나올때는 sdk min 버전확인 하거나 manifest에 support-screen 을 nomal-size true,  any-density true로 해준다

4. CCSequence action = CCSequence.actions(CCCallFunc.action(this, "ex"))

-->   public void ex(){}   , public void ex(Object obj){} 

    : CCCallFunc을 부를때에는 public 으로 불러준다

5.scene 전환시 메모리 해제 
CCSpriteFrameCache.purgeSharedSpriteFrameCache();
CCTextureCache.purgeSharedTextureCache(); 
CCDirector.sharedDirector().purgeCachedData();
CCDirector.sharedDirector().getSendCleanupToScene(); //테스트중입니다^^;

6.  open Gl 드로우 예제
        @Override
public void draw(GL10 gl) { 
CCDrawingPrimitives.ccDrawCircle(gl, CGPoint.make(100, 100), 10, 0, 10, false);//원
CCDrawingPrimitives.ccDrawCircle(gl, CGPoint.make(50, 50 / 2), 50,            ccMacros.CC_DEGREES_TO_RADIANS(90), 50, true);
 
CGPoint vertices[] = {CGPoint.ccp(0, 0), CGPoint.ccp(50, 50), CGPoint.ccp(100, 50), CGPoint.ccp(100, 100), CGPoint.ccp(50, 100)};//다각형
        CCDrawingPrimitives.ccDrawPoly(gl, vertices, 5, false);
}

7. CGPoint pt = this.convertToNodeSpace(x, y);  //현재노드에서 원점으로 시작되는 좌표계를 얻어오는 함수 
          -> 만약 특정위치에 스프라이트를 만들었다면 스프라이트의 원점 좌표를 시작으로 새로운 좌표를 얻어
             올수 있게한다. 

8. 이벤트를 받을 수 있는 것은 레이어이다. 스프라이트에서는 불가능하다. 한 레이어에서 여러 스프라이트를 애드하여 이벤트를 받으면 프로그램도 길어지고 처리가 불편하다. 따라서 스프라이트에서 이벤트를 처리하는것이 좋다. 스프라이트에 이벤트를 주고 싶으면 레이어 터치 시 좌표를 받아와서 스프라이트를 상속받은클래스에서 좌표를 받아 convertToNodeSpace 메소드를 이용하여 처리하면 편리하다.
 
반응형