声 明 本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明,或注明出处。 gl.paea.cn版权所有。 |
Hello,大家好,欢迎回到“和屌丝一起学cocos2dx”系列教程,上节,我们说到了“33种场景切换”,不知道大家回去试了没有呢,是不是也做出来效果了呢?这节我们说一下触屏事件。
【一】:为毛学他
Fuck,你说为啥,上节你就开始闹情绪。
【二】:函数
addTargeteDelegate("触屏事件委托CCtouchDelegate目标","优先级","是否拦截触屏事件");
触屏事件:
1.当用户第一次触碰手机屏幕时响应的回调函数
virtual bool cctouchBegan(CCtouch * touch,CCEvent * event);
2.当用户手指在手机屏幕上滑动时响应的回调函数
virtual voID cctouchmoved(CCtouch * touch,Tahoma; line-height:21px"> 3.当用户手指在离开手机屏幕上时响应的回调函数
virtual voID cctouchended(CCtouch * touch,192)">流程:(感谢 袁辉、春丽、Rock You 技术支持)
当用户碰到屏幕就调用cctouchBegan,用户若是滑动则开始不停的回调cctouchmoved(类似更新),当用户离开屏幕调用cctouchended。
【三】:问题
昨天我们说了onEnter、onExit,但是今天我在调用的时候却无法执行action动作,最后在onEnter、onExit函数里,继承一下父类就实现了,这里要用父类初始化下,所以cclayer::onEnter();这样的初始化,一定不能忘了写。(感谢 秋风、蒙大齐 技术支持)
【四】:示例
1.新建项目touchdemo
2.载入一张图作为资源
touchdemo.h
1.写上触屏事件和生命周期
//触屏事件
virtual bool cctouchBegan(CCtouch * touch,CCEvent * event);
virtual voID cctouchmoved(CCtouch * touch,242)">virtual voID cctouchended(CCtouch * touch,80)">//生命周期
virtual voID onEnter();
virtual voID onExit();
touchdemo.cpp
1.在初始化函数里面添加一个sp对象和ttf对象
//-new-//
CCSize mysize=CCDirector::sharedDirector()->getWinSize();
CCSprite* pSprite = CCSprite::create("cat.png");
pSprite->setposition(ccp(mysize.wIDth/2,mysize.height/2));
this->addChild(pSprite,1);
cclabelTTF * ttf=cclabelTTF::create("none","Thonburi",24);
ttf->setposition(ccp(mysize.wIDth/2,mysize.height-50));
this->addChild(ttf,1,2);
2.实现触屏事件
bool touchdemo::cctouchBegan(CCtouch * ctouch,CCEvent * event){
cclabelTTF * ttf=(cclabelTTF *)this->getChildByTag(2);
ttf->setString("in");
return true;
}
voID touchdemo::cctouchmoved(CCtouch * ctouch,242)">ttf->setString("move");
CCPoint point=ctouch->getLocation();
CCSprite * sp=(CCSprite *)this->getChildByTag(1);
sp->setposition(point);
voID touchdemo::cctouchended(CCtouch * ctouch,242)">ttf->setString("out");
CCActionInterval * a1=CCMoveto::create(5.0f,ccp(mysize.wIDth/2,242)">sp->runAction(a1);
3.实现生命函数
voID touchdemo::onEnter(){
//开启触屏监听
CCDirector::sharedDirector()->gettouchdispatcher()->addTargetedDelegate(this,false);
cclayer::onEnter();//一定不要忘了
voID touchdemo::onExit(){
//关闭触屏监听
CCDirector::sharedDirector()->gettouchdispatcher()->removeDelegate(this);
cclayer::onExit();
最后我们来看一下效果:
总结
以上是内存溢出为你收集整理的cocos2dx-触屏事件全部内容,希望文章能够帮你解决cocos2dx-触屏事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)