實現CCLabelProtocol
和CCRGBAProtocol
是在命名為Label的類中:
#import <cocos2d.h>
@interface Label : CCNode <CCLabelProtocol, CCRGBAProtocol>
@property (nonatomic, copy, readwrite) NSString* string;
@property (nonatomic, readwrite) ccColor3B color;
@property (nonatomic, readwrite) GLubyte opacity;
- (id) initWithString: (NSString*) aString;
@end
還加了一個initWithString 方法:
#import "Label.h"
@implementation Label
@synthesize string,opacity,color;
- (id) initWithString: (NSString*) aString
{
if(self=[super init])
{
string= aString;
color.r=255;
color.g=0;
color.b=0;
opacity= 10;
}
return self;
}
- (ccColor3B) color
{
return color;
}
@end
這是HelloWorldLayer init方法:
Label* label= [[Label alloc]initWithString: @"Start"];
CCMenuItemLabel* item= [CCMenuItemLabel itemWithLabel: label block:^(id sender)
{
NSLog(@"Label Clicked");
}];
CCMenu* menu= [CCMenu menuWithItems: item, nil];
[self addChild: menu];
我用的是普通的cocos2d模板,放在CCLayer類中的。
但是運行之後屏幕是黑的,沒顯示label。
因為你只用了幾個協議,繼承CCNode。CCNode是不可見的
你可以讓label繼承 CCLabelTTF,由於 CCLabelTT已經實現了,可以省略協議,
Label* label = [CCLabelTTF labelWithString:@"Start" fontName:@"Arial" fontSize:24];
label.color = ccRED;
CCMenuItemLabel* item = [CCMenuItemLabel itemWithLabel: label block:^(id sender)
{
NSLog(@"Label Clicked");
}];
CCMenu* menu = [CCMenu menuWithItems:item, nil];
[self addChild:menu];