cocos2d-x处理单点触摸事件

这篇文章真的很菜鸟,但是出于考虑到cocos2d-x的资料真的不好查,网上又是千古文章一大抄,抄了很多还是很多的错误,所以还是写一篇博客。

cocos2d-x的触摸事件有多种方式,单点触摸最为简单。

首先我们新建一个Cocos2d-win32 Application,转到HelloWorldScene.cpp的bool HelloWorld::init()方法,里边有一个do...while(0)的循环,把循环里边bRet = true;之前的代码全部注释掉,然后在bRet = true;之前的位置添加代码:

this->setIsTouchEnabled(true);//看名字是开启触摸输入,不过我试了不写也可以,但是别的教程都说写,先留着吧

CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,INT_MIN+1,true);

然后转到HelloWorldScene.h,在最上边添加using namespace cocos2d;,在类的public里边添加函数声明:

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

virtual void ccTouchEnded(CCTouch *pTouch,CCEvent *pEvent);

virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);

virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);

virtual void registerWithTouchDispatcher(void);

然后再在cpp中写上函数定义:

void HelloWorld::registerWithTouchDispatcher() {

}

bool HelloWorld::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent) {
return true;//返回true,就意味着不想让这个触摸事件被传送到其他优先级更低的有针对性的触摸处理
}

void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) {

}

void HelloWorld::ccTouchEnded(CCTouch *pTouch,CCEvent *pEvent) {

}

void HelloWorld::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent) {

}

然后调试运行就可以了。

再来说一个鼠标拖拽Sprite的例子,先在头文件的public里添加一个cocos2d::CCSprite* player;,这是咱们的角色。

再在cpp文件init函数的循环里的最前边,添加如下代码:

player=CCSprite::spriteWithFile("CloseNormal.png");

CC_BREAK_IF(! player);

this->addChild(player,0,1);

CCSize screenSize = CCDirector::sharedDirector()->getWinSize();

float imageHeight=player->getTexture()->getContentSize().height;

player->setPosition(CCPointMake(screenSize.width/2,imageHeight/2));

这里的CloseNormal.png是这个项目自带的一个图片。

再把ccTouchBegan函数和ccTouchMoved函数的里边的最前边都添加如下代码:

player->setPositionX(pTouch->locationInView(pTouch->view()).x);

player->setPositionY(CCDirector::sharedDirector()->getWinSize().height-pTouch->locationInView(pTouch->view()).y);

//这里为啥还要用窗口高度减去pTouch的y值呢?
//cocos2d-x比较奇特,y坐标系是自下向上递增的,最下边是0,最上边是最大
//所以这里要减去一下,才可以的
//读者可以去掉前边的窗口高度减去的部分,试试

注意ccTouchBegan最后一定要有一个return true;的。

调试运行,鼠标点击并移动,一个关闭按钮图案的Sprite会跟着鼠标走。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jether

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值