如果你没有麻烦,你将不得不在 OpenGL 视图中进行,这真的很简单。要显示一些信息,您需要 CCLabel 类。要改变它的位置,你需要 CCMoveTo/CCMoveBy 动作,要改变不透明度,你需要 CCFadeTo/CCFadeIn/CCFadeOut 动作,要延迟你需要 CCDelayTime。为了使这一切协同工作,您需要 CCSpawn 和 CCSequence。
CCSpawn 会同时运行几个动作(例如淡入和从右移到中心),CCSequence 会一个个运行几个动作(序列淡入+移到中心,同时延迟,序列淡出+ 从中心向左移动)。然后你应该只安排方法,这将创建标签并在它们上运行操作。在代码中它将类似于
让我们定义完整的动画时间
#define ANIMATION_TIME 4.f
schedule 方法在任何你想开始动画的地方
[self schedule:@selector(runNextMessage) interval:ANIMATION_TIME];
它会runNextMessage
每秒调用一次ANIMATION_TIME
方法
- (void) runNextMesage
{
NSString* message = //get next message
CCLabelTTF* label = [CCLabelTTF labelWithString:message
dimensions:desiredDimensionsOfTheLabel
alignment:UITextAlignmentLeft
lineBreakMode:UILineBreakModeWordWrap
fontName:@"Arial"
fontSize:20.f];
CGSize winSize = [[CCDirector sharedDirector] winSize];
// place the label out the right border
[label setPosition: ccp(winSize.width + label.contentSize.width, winSize.height / 2)];
// adding it to the screen
[self addChild:label];
ccTime spawnTime = ANIMATION_TIME / 3;
// create actions to run
id appearSpawn = [CCAction actionOne:[CCMoveTo actionWithDuration:spawnTime]
two:[CCFadeIn actionWithDuration:spawnTime]];
// create show action and disappear action
// create result sequence
id sequence = [CCSequence actions: appearSpawn, showAction, disappearAction, nil];
[label runAction: sequence];
}