cocos2d的5个重要协议

来源:互联网 发布:28岁程序员转行 编辑:程序博客网 时间:2024/06/05 19:06

5个重要协议

  • CCRGBAProtocol 支持RGBA着色协议
  • CCBlendProtocol 支持纹理混合协议
  • CCTextureProtocol 纹理协议
  • CCLabelProtocol 文本框协议
  • CCDirectorDelegate Director代理

CCRGBAProtocol 实现此协议的类可以设置 ccColor3B 类型的颜色 和 0-255 的透明度

 

@protocol CCRGBAProtocol <NSObject>
 
// 设置 ccColor3B 结构的颜色数据
-(void) setColor:(ccColor3B)color;
-(ccColor3B)color;
 
// 如果纹理有 Premultiplied Alpha 数据 那么更改透明度同时会更改RGB通道的值
-(void)setOpacity:(GLubyte)opacity;
-(GLubyte)opacity;
 
// 可选实现
@optional
// 设置更改透明度时是否修改RGB值
// 如果设置YES, 透明度被设置时将会调用: glColor(opacity,opacity,
opacity,opacity)
// 如果设置NO, 透明度呗设置时将会调用: glColor(R,G,B,opacity)
// 纹理如果有 premultiplied alpha数据将会默认把此项设置为YES, 否则设置为NO
-(void)setOpacityModifyRGB:(BOOL)boolean;
// 返回更改透明度时是否修改RGB值
-(BOOL)doseOpacityModifyRGB;
@end

CCBlendProtocol 支持混合协议可以让对象指定GL不同的混合函数 ccBlendFunc 渲染纹理

 

@protocol CCBlendProtocol <NSObject>
 
// 指定渲染函数
-(void)setBlendFunc:(ccBlendFunc)blendFunc;
-(ccBlendFunc)blendFunc;
 
@end

CCTextureProtocol 支持纹理协议可以使得对象使用纹理来渲染自己.
CCNode及其子类使用 Texture2D 类来渲染图片.
纹理可以包含一个 混合函数, 此函数可以在任意时间被更改

 

@protocol CCTextureProtocol <NSObject>
-(CCTexture2D *)texture;
-(void)setTexture:(CCTexture2D *)texture;
@end

CCLabelProtocol 所有Label相关对象都实现此协议. 此协议提供一个设置标签文本的接口

 

@protocol CCLabelProtocol <NSObject>
-(void) setString:(NSString *)label;
-(NSString *)string;
 
@optional
// 使用 C字符串, 此方法要比NSString快, 因为不需要向NSString发送alloc/retain/release消息
-(void)setCString:(char *)label;
@end

CCDirectorDelegate 实现 CCDirector代理 协议的类可以响应CCDirector的 设备旋转 更新投影的消息

 

@protocol CCDirectorDelegate <NSObject>
 
@optional
// 当CCDirector 使用了自定义 Projection 并且在投影更新时,会向代理发送此消息
-(void) updateProjection;
 
// 检查当前应用是否支持指定的设备方向
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation;
 
@end
0 0