首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

coco2d-x 2.0学习系列(2):CCLayer

2013-03-01 
coco2d-x 2.0学习系列(二):CCLayerCCLayer相对于CCNode几乎没有什么新功能,但是可以接受触摸和加速输入。图

coco2d-x 2.0学习系列(二):CCLayer
CCLayer相对于CCNode几乎没有什么新功能,但是可以接受触摸和加速输入。

图层不需要接收触摸和加速计输入,就尽量使用CCNode表示图层,CCLayer因为能够接收触摸和加速计输入会增加不必要的开销。移动、缩放、旋转整个图层,图层上的所有节点也会跟着一起移动、缩放、旋转。

类结构:

coco2d-x 2.0学习系列(2):CCLayer

常用函数:

virtual?bool?isTouchEnabled?()//CCLayer默认情况是不接收触摸输入的,需要显示地设置isTouchEnabled为YES

virtual?bool?isAccelerometerEnabled?()//设置加速输入

CCLayer的触摸有两种类型。

1)?单点触摸?

virtual?void?onEnter();//
?virtual?void?onExit();//

virtual?void?ccTouchesBegan?(CCSet?*pTouches,?CCEvent?*pEvent)//单指接触到屏幕时

virtual?void?ccTouchesMoved?(CCSet?*pTouches,?CCEvent?*pEvent)//当手指在屏幕上移动时

virtual?void?ccTouchesEnded?(CCSet?*pTouches,?CCEvent?*pEvent)//手指离开屏幕时

virtual?void?ccTouchesCancelled?(CCSet?*pTouches,?CCEvent?*pEvent)//当触摸取消时

a)?onEnter();接口。在此接口中,需要调用父类的该接口,并且最重要的,要为当前对象注册一个触摸委托(即:代理)。参考如下代码:
?CCLayer::onEnter();
?CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,?0,?true);
b)?onExit();接口。在此接口中,需要将在onEnter()中注册的当前对象的触摸委托给移除掉。然后调用父类的onExit();。参考代码如下:
?CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);
?CCLayer::onExit();

?

2)?多点触摸

virtual?void?ccTouchesBegan(CCSet?*pTouches,?CCEvent?*pEvent);
?virtual?void?ccTouchesMoved(CCSet?*pTouches,?CCEvent?*pEvent);
?virtual?void?ccTouchesEnded(CCSet?*pTouches,?CCEvent?*pEvent);

??CCSet*对象。它存储着所有的触摸信息。

Tip:

单点触摸时候一定得重写:

virtual?bool?ccTouchBegan(CCTouch?*pTouch,CCEvent?*pEvent);

并且返回true

?void?registerWithTouchDispatcher();//默认为多点触摸?单点触摸的时候重写此方法

void?HelloWorld::registerWithTouchDispatcher(){

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,true);

}

?

热点排行