Cocos2d中的五个重要协议

本文介绍了Cocos2d-x中触摸处理的两种协议:CCStandarTouchDelegate和CCTargetedTouchDelegate,以及如何通过实现这些协议来处理触摸事件。此外还详细说明了CCRGBAProtocol、CCBlendProtocol、CCTextureProtocol和CCLabelProtocol等协议的功能,包括颜色设置、纹理渲染、混合功能及标签文本设置。
摘要由CSDN通过智能技术生成

1. 触摸协议

分别是CCStandarTouchDelegateCCTargetedTouchDelegate。前面一个协议功能和UIView里面的touch方法一模一样,只是方法名称前加了cc,后面的协议只处理单个触摸,并且可以吞噬触摸。

触摸实现是先被EAGLView接收,然后让CCTouchDispatcher单例处理,dispatcher则统一让实现CCStandarTouchDelegateCCTargetedTouchDelegate的对象处理。但前提是这些对象必须在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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值