0

プロジェクトを 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;
}

2.0以前にはなかった「ShaderProgram」のせいでしょうか?これまでにすべてを試してみました:(

「ccWHITE」または「{255,255,255}」を含むファイルがあるかどうか、すべてのプロジェクトで検索しましたが、CCLabelTTF に関連するものはありません (CCSprite を除いて、ccBLACK に変更すると、すべてのスプライトが黒くなります)

4

1 に答える 1

3

ivar を設定する代わりに、プロパティのアクセサーを使用します。

self.color = ccBlack;

また、CCLabelTTF を変更しないでください。動作を変更したい場合は、サブクラスを作成してください。

于 2013-01-18T04:14:55.310 に答える