我刚刚将我的项目从 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,我的所有精灵都会变黑)