cocos2dx触摸事件分标准事件(CCStandardTouchDelegate)和目标事件(CCTargetedTouchDelegate),其中标准事件对象平等的接收并处理事件,而目标事件是优先级高的对象优先处理事件并决定是否拦截事件的继续穿博文,如果在ccTouchBegin返回false,那ccTouchMove,ccTouchEnd,ccTouchCancle都接收不到事件了。
CCLayer已经实现了标准事件(
CCStandardTouchDelegate
),在初始化的时候调用setTouchEnable(true)方法开启,层被删除或切换时时,事件会自动移除。
如果要使用目标事件,首先实现
CCTargetedTouchDelegate
接口,通过事件分发器注册
CCTouchDispatcher
>
addTargetedDelegate
(delegate,priority,isSwalles)。在onexit移除。
在游戏层中设置
setAccelerometerEnabled(true)
开启加速器,实现这个方法接受事件,
virtual void didAccelerate(CCAcceleration* pAccelerationValue);
CCAcceleration是一个结构体 包含加速度计获得的三个方向的加速度
,通过计算各方向速度的变化可定义出摇晃,抛物,掉落等事件。加速器是移动设备才有的功能。PC和移动设备触摸事件的区别是,PC可悬停可右击,移动设备可多点触摸。
CCTextFieldTTF
可输入文字控件。
用法:CCTextFieldTTF::create('默认显示的文本','字体名','字体大小')
其他函数:
getString 获取文本框内容
setString 设置文本框内容
attachWithIME 开启虚拟键盘
detachWithIME 关闭虚拟键盘
//当用户启动虚拟键盘的时候的回调函数
virtual bool onTextFieldAttachWithIME(CCTextFieldTTF * mysender);
//当用户关闭虚拟键盘的时候的回调函数
virtual bool onTextFieldDetachWithIME(CCTextFieldTTF * mysender);
//当用户输入的时候的回调函数
virtual bool onTextFieldInsertText(CCTextFieldTTF * mysender,const char * text,int textnum);
//当用户删除文字的时候的回调函数
virtual bool onTextFieldDeleteBackward(CCTextFieldTTF * mysender,const char * text,int textnum);