runAnimationsForSequenceNamed不在运行时创建的CCNode上运行

时间:2013-07-28 20:07:46

标签: cocos2d-iphone cocosbuilder

目前我正在制作一个带有场景的游戏,其中有一块带字母的瓷砖。由于瓷砖在动态电路板上的定位和“字母值”,因此会在运行时放置瓷砖。

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

我制作了一个名为Tile.ccb的ccb文件。这是一个小而小的简单的CCNode,带有背景渐变和TTF层。 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的子类。

瓷砖显示,letterLabel可以调整得很好。但是,播放动画'Touched'不起作用。以下代码是STTile的一部分,用于在触摸时播放动画/序列:

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

'self.userObject'值(包含CCAnimationManager)为NULL,因为它在加载后立即由[CCBReader nodeGraphFromFile]“清理”。这是设计的吗?如果是这样,为什么?如在CocosDragon示例中所示,当在“设计时”将tile节点放置在“board”层中时,用于动画的相同代码工作正常。 (建行中的CCBFile参考)

如何在运行时创建CCB节点的多个实例,并且仍能够对它们运行动画?在设计时放置节点并不总是一种选择。提前致谢!

1 个答案:

答案 0 :(得分:0)

@Matthijn是对的!谢谢!

就我而言,它是由CocosBuilder中自定义类的名称与我的代码之间的类名不一致引起的:

Note that the name of Custom Class