展会信息港展会大全

在Cocos2d-X3.0中实现多点触摸
来源:互联网   发布日期:2015-09-28 11:07:26   浏览:1340次  

导读: 在上一篇博客介绍了在Cocos2d-X3.0中实现单点触摸,但是有些游戏还会用到多点触摸,其中最典型的的游戏室节奏大师,在节奏大师中会不断产生运动的音符,玩家需要不停的点击音符以获得高分,而且...

在上一篇博客介绍了在Cocos2d-X3.0中实现单点触摸,但是有些游戏还会用到多点触摸,其中最典型的的游戏室节奏大师,在节奏大师中会不断产生运动的音符,玩家需要不停的点击音符以获得高分,而且玩家可以多个手指头一起点,多个手指头一起点就是使用多点触摸实现的

下面通过一个小的例子介绍如何在Cocos2d-X3.0中实现多点触摸

首先创建一个Touches类,并且在Touches.h中添加下面的代码

#ifndef _Touches_H_

#define _Touches_H_

#include "cocos2d.h"

USING_NS_CC;

class Touches : public Layer

{

public:

Touches(void);

~Touches(void);

CREATE_FUNC(Touches);

static Scene* createScene();

bool init();

//开始触摸

void onTouchesBegan(const std::vector& touches, Event*event);

//滑动

void onTouchesMoved(const std::vector& touches, Event*event);

//结束触摸

void onTouchesEnded(const std::vector& touches, Event*event);

//取消触摸

void onTouchesCancelled(const std::vector& touches, Event*event);

};

#endif*>*>*>*>

在Touches.cpp中添加下面的代码

#include "Touches.h"

Touches::Touches(void)

{

}

Touches::~Touches(void)

{

}

Scene* Touches::createScene()

{

auto scene = Scene::create();

auto layer = Touches::create();

scene->addChild(layer);

return scene;

}

bool Touches::init()

{

if(!Layer::init())

{

return false;

}

//创建一个事件监听器,AllAtOne为多点触摸

auto listener = EventListenerTouchAllAtOnce::create();

//事件回调函数

listener->onTouchesBegan = CC_CALLBACK_2(Touches::onTouchesBegan, this);

listener->onTouchesMoved = CC_CALLBACK_2(Touches::onTouchesMoved, this);

listener->onTouchesEnded = CC_CALLBACK_2(Touches::onTouchesEnded, this);

//添加监听器

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

return true;

}

//开始触摸

void Touches::onTouchesBegan(const std::vector& touches, Event*event)

{

log("touches began !");

}

//滑动

void Touches::onTouchesMoved(const std::vector& touches, Event*event)

{

log("touches moved !");

}

//结束触摸

void Touches::onTouchesEnded(const std::vector& touches, Event*event)

{

log("touches enaded !");

}

//取消触摸

void Touches::onTouchesCancelled(const std::vector& touches, Event*event)

{

onTouchesEnded(touches, event);

}*>*>*>*>

程序测试的结果:

当触摸屏幕时会打印touches began !

当触摸结束后会打印touches ended !

当在屏幕上滑动时会打印touches moved !

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港