현재 글자가있는 타일이있는 장면으로 게임을하고 있습니다. 타일은 동적 보드의 위치와 문자 값으로 인해 런타임에 배치됩니다.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 노드의 여러 인스턴스를 어떻게 생성하고 여전히 어떻게 그것들에서 애니메이션을 실행할 수 있습니까? 디자인 타임에 노드를 배치하는 것이 항상 옵션은 아닙니다. 미리 감사드립니다!
STTile' 수업. 나는'CCBReader :: nodeGraphFromFile' 만 CocosBuilder (CCNode, CCLayer, CCSprite ...)가 알고있는 노드를 생성한다고 생각한다. – fiddler
CocosBuilder에서 "Custom Class"를 설정할 수있다. 여기에 표시되는대로 : http://cl.ly/QW1n – Matthijn
Cocos2d-x와 동일한 문제가 있습니다. – Nianliang