プロジェクトを 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 に変更すると、すべてのスプライトが黒くなります)