CCLabelTTF - 更改标签的默认颜色

时间:2013-01-18 03:57:05

标签: colors cocos2d-iphone cclabelttf

我刚刚将我的项目从cocos2d 1.0.1升级到2.0,经过大量调整后,我无法像之前那样更改CCLabelTTF的默认颜色(这样我就避免了一行我创建的每个标签的代码。以前,我这样做:

在CCLabelTTF.m中:

- (id) initWithString:(NSString*)str dimensions:(CGSize)dimensions alignment:(CCTextAlignment)alignment lineBreakMode:(CCLineBreakMode)lineBreakMode fontName:(NSString*)name fontSize:(CGFloat)size
{
  if( (self=[super init]) ) {

    dimensions_ = CGSizeMake( dimensions.width * CC_CONTENT_SCALE_FACTOR(), dimensions.height * CC_CONTENT_SCALE_FACTOR() );
    alignment_ = alignment;
    fontName_ = [name retain];
    fontSize_ = size * CC_CONTENT_SCALE_FACTOR();
    lineBreakMode_ = lineBreakMode;
    color_ = ccBLACK;

    [self setString:str];
  }
  return self;
}

我正在更改此方法中的颜色,因为每个“initWithString ...”方法都返回此方法,但即使我在cocos2D 2.0中这样做,它也不起作用。

这是我的新CCLabelTTF.m:

- (id) initWithString:(NSString*)str dimensions:(CGSize)dimensions hAlignment:(CCTextAlignment)alignment vAlignment:(CCVerticalTextAlignment) vertAlignment lineBreakMode:(CCLineBreakMode)lineBreakMode fontName:(NSString*)name fontSize:(CGFloat)size
{
  if( (self=[super init]) ) {

    // shader program
    self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:SHADER_PROGRAM];

    dimensions_ = dimensions;
    hAlignment_ = alignment;
    vAlignment_ = vertAlignment;
    fontName_ = [name retain];
    fontSize_ = size;
    lineBreakMode_ = lineBreakMode;
            color_ = ccBLACK;

    [self setString:str];
  }
  return self;
}

是不是因为“ShaderProgram”的东西在2.0之前没有?请帮助我到目前为止尝试了一切:(

我甚至搜索了我的所有项目,如果有一个包含“ccWHITE”或“{255,255,255}”的文件但是没有与CCLabelTTF相关的内容(CCSprite除外,但是如果我将其更改为ccBLACK,我所有的精灵都会变黑)

1 个答案:

答案 0 :(得分:3)

不使用设置ivar,而是使用属性的访问器:

self.color = ccBlack;

此外,您不应修改CCLabelTTF。如果要更改行为,请创建子类。