2013-07-28 2 views
1

현재 글자가있는 타일이있는 장면으로 게임을하고 있습니다. 타일은 동적 보드의 위치와 문자 값으로 인해 런타임에 배치됩니다.runAnimationsForSequenceNamed가 런타임에 생성 된 CCNodes에서 작동하지 않습니다.

CCScene (fullscreen) 
    CCLayer (board) 
    CCNodes (tiles) 

나는 Tile.ccb라는 ccb 파일을 만들었습니다. 배경 기울기와 TTF 레이어가있는 작은 CCNode &입니다. CCNode에는 사용자가 타일을 터치 할 때 재생해야하는 짧은 애니메이션이 포함 된 'Touched'라는 타임 라인이 있습니다. 또한 노드에는 사용자 정의 클래스 세트가 있습니다. (STTile는)

현재 나는이 방법을 통해 프로그래밍 방식으로 모든 타일로드 오전 :

만들고 보드의 위치에 대한 새 타일을 반환
+ (STTile *)tileWithLetter:(NSString *)letter onRow:(int) x andCol: (int) y; 
{ 
    STTile *tile = (STTile *)[CCBReader nodeGraphFromFile:@"Tile.ccbi"]; 
    tile.letterLabel.string = letter; 
    tile.x = x; 
    tile.y = y; 
    return tile; 
} 

. Cocos2D (Objective-C)에서 STTile은 CCNode의 하위 클래스입니다.

타일 디스플레이와 문자 라벨을 잘 조절할 수 있습니다. 그러나 'Touched'애니메이션 재생은 작동하지 않습니다. 다음 코드는 STTile의 일부와 접촉시 애니메이션/순서를 재생하는 데 사용됩니다 그것은으로 '정리'됩니다 때문에

CCBAnimationManager *animationManager = self.userObject; 
[animationManager runAnimationsForSequenceNamed:@"Touched"]; 

합니다 (CCAnimationManager 보유)가 'self.userObject'값을 NULL입니다 [CCBReader nodeGraphFromFile],로드 직후. 디자인에 의한 것인가? 그렇다면 왜? CocosDragon 예제에서와 같이 타일 노드가 '디자인 타임'에 '보드'레이어에 배치되었을 때 애니메이션을위한 동일한 코드가 제대로 작동합니다. (CCB의 CCB 파일 참조)

런타임에 CCB 노드의 여러 인스턴스를 어떻게 생성하고 여전히 어떻게 그것들에서 애니메이션을 실행할 수 있습니까? 디자인 타임에 노드를 배치하는 것이 항상 옵션은 아닙니다. 미리 감사드립니다!

+0

STTile' 수업. 나는'CCBReader :: nodeGraphFromFile' 만 CocosBuilder (CCNode, CCLayer, CCSprite ...)가 알고있는 노드를 생성한다고 생각한다. – fiddler

+2

CocosBuilder에서 "Custom Class"를 설정할 수있다. 여기에 표시되는대로 : http://cl.ly/QW1n – Matthijn

+0

Cocos2d-x와 동일한 문제가 있습니다. – Nianliang

답변

0

@Matthijn이 맞습니다! 감사! 내 경우

, 그것은 사용자 정의 CocosBuilder의 클래스 내 코드의 이름 사이에 일치하지 않는 클래스 이름에 의한 : 나는 CocosBuilder 사용자 정의`의 알고 있는지 이해할 수 없어요

Note that the name of Custom Class

관련 문제