1. 触摸协议
分别是CCStandarTouchDelegate和CCTargetedTouchDelegate。前面一个协议功能和UIView里面的touch方法一模一样,只是方法名称前加了cc,后面的协议只处理单个触摸,并且可以吞噬触摸。
触摸实现是先被EAGLView接收,然后让CCTouchDispatcher单例处理,dispatcher则统一让实现CCStandarTouchDelegate和CCTargetedTouchDelegate的对象处理。但前提是这些对象必须在dispatcher里面注册了。
所以,任何一个CCNode,只要实现了触摸协议,并且实例注册到dispatcher里面,就可以接收并处理触摸信息了。
CCTargetedTouchDelegate可以实现自定义菜单。如果设置可以吞噬触摸,ccTouchBegan返回YES,则不会往下传递触摸事件了,如果返回NO,则会传递,但是本类中的其他触摸信息将被忽略。
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
|