2013-03-11 3 views
0

저는 cocos2d 게임 개발을 처음 접했습니다. CCNode를 서브 클래 싱했습니다.이 노드의 태그를 설정하는 게임 레이어에이 서브 클래스를 추가하기 위해 루핑을하고 있습니다.이 m 파일에서 하위 클래스 나는 요소를 감지하기 위해 델리게이트 델리게이트를 사용하고 있습니다.하지만 콘솔은이 노드의 모든 객체에 대해 태그가 생성되었음을 보여줍니다.CCNode 태그 - 모든 태그가 동일 함을 나타냅니다.

+4

어떤 태그 값입니까? -1 일 경우 절대로 변경하지 않았습니다. 하위 클래스의 x로 설정하면 하위 클래스의 모든 인스턴스에 태그 값 x (즉, 같은 값)가 생깁니다. tag 속성을 사용하는 방법과 관련된 몇 가지 코드를 게시하십시오. – LearnCocos2D

답변

0

각 노드마다 태그를 초기화해야합니다. uniq 정수를 태그로 사용하십시오. 더 나은 열거 형을 사용하십시오.

typedef enum 
{ 
    kEnemy_Dog = 1000, 
    kEnemy_Cat, 
    kEnemy_Rat, 
    kEnemy_Bat 
}EnemyType; 

typedef enum 
{ 
    kHeroType_Lion = 2000, 
    kHeroType_Tiger, 
    kHeroType_Dino, 
    kEnemy_Eagle 
}HeroType; 


CCSprite *dog = [CCSprite spriteWithFile:TEX_DOG]; 
dog.tag = kEnemy_Dog; 
[self addChild:dog z:2 tag: kEnemy_Dog]; 


CCSprite *lion = [CCSprite spriteWithFile:TEX_DOG]; 
lion.tag = kHeroType_Lion; 
[self addChild:dog z:2 tag: kHeroType_Lion]; 

//to check 
if(inSprite.tag == kHeroType_Lion) 
관련 문제