CCMotionStreak setColor无法在cocos2d 3.1中运行

时间:2014-07-20 01:56:47

标签: cocos2d-iphone

它一直显示黑色。

以下是我的演示代码:

- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    [self beginMotionStreak];
}

- (void)touchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
    [self addMotionStreak:[touch locationInWorld]];
}

- (void)touchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
    [self endMotionStreak];
}

- (void)beginMotionStreak
{
    CCMotionStreak *streak = [CCMotionStreak streakWithFade:10 minSeg:1.0 width:5.0 color:[CCColor greenColor] texture:nil];
    [self addChild:streak z:1 name:@"streak"];
}

- (void)addMotionStreak:(CGPoint)touchLoc
{
    CCMotionStreak *streak = (CCMotionStreak *)[self getChildByName:@"streak" recursively:YES];
    [streak setColor:[CCColor redColor]];
    [streak setPosition:touchLoc];
}

- (void)endMotionStreak
{
    [self removeChildByName:@"streak" cleanup:YES];
}

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:0)

需要指定用作运动条纹形状的纹理。只需创建小的圆形或矩形白色图像,并在创建CCMotionStreak时将其指定为纹理:

- (void)beginMotionStreak
{
    CCMotionStreak *streak = [CCMotionStreak streakWithFade:10 minSeg:1.0 width:5.0 color:[CCColor greenColor] textureFilename:@"motion_streak.png"];
    [self addChild:streak z:1 name:@"streak"];
}

请注意,最后一个参数名称为textureFilename而不是texture,否则您需要先自己加载纹理并传递实例而不是文件名。

为什么纹理应该是白色?因为您稍后设置的颜色会与纹理的颜色相乘。

如果您不确定图像的形状,请尝试在任何图形编辑器中创建不同的图像。我使用过Gimp,但这对于这么简单的任务来说太过分了。