Cocos2d-X3.4中使用单点触摸

在游戏中,经常会用到触摸,大部分游戏也是通过触摸控制游戏角色运动的,在Cocos2d-X3.0中使用了新的触摸机制,Cocos2d-X3.0中摒弃了Cocos2d-X2.0中将要触发的事件交给代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应,在Cocos2d-X3.0中只需通过创建一个事件监听器-用来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher,所有事件监听器有这个分发器统一管理,即可完成事件响应。

上面的话可能过于抽象,下面通过一个简单的例子来测试Cocos2d-X3.0中触摸

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

#ifndef __TouchScene__
#define __TouchScene__

#include "cocos2d.h"
USING_NS_CC;

class TouchScene : public Layer
{
public:
    static Scene* createScene();

    virtual bool init();

    CREATE_FUNC(TouchScene);

	//开始触摸
	bool onTouchBegan(Touch* touch, Event  *event);

	//滑动
	void onTouchMoved(Touch* touch, Event  *event);

	//结束触摸
	void onTouchEnded(Touch* touch, Event  *event);
};

#endif

在TouchScene,cpp中添加下面的代码

#include "Touch.h"

Scene* TouchScene::createScene()
{
    auto scene = Scene::create();

    auto layer = TouchScene::create();

    scene->addChild(layer);

    return scene;
}

bool TouchScene::init()
{
    if(!Layer::init())
    {
        return false;
    }

	//创建一个事件监听器,OneByOne为单点触摸
	auto listener = EventListenerTouchOneByOne::create();

	//事件回调函数
	listener->onTouchBegan = CC_CALLBACK_2(TouchScene::onTouchBegan, this);
    listener->onTouchMoved = CC_CALLBACK_2(TouchScene::onTouchMoved, this);
    listener->onTouchEnded = CC_CALLBACK_2(TouchScene::onTouchEnded, this);

	//添加监听器
	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

	return true;
}

//开始触摸
bool TouchScene::onTouchBegan(Touch* touch, Event  *event)
{
	log("touch began !");

	return true;
}

//滑动
void TouchScene::onTouchMoved(Touch* touch, Event  *event)
{
	log("touch moved !");
}

//结束触摸
void TouchScene::onTouchEnded(Touch* touch, Event  *event)
{
	log("touch ended !");
}

测试程序,程序的测试结果如下:

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

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

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

时间: 2024-11-14 15:47:35

Cocos2d-X3.4中使用单点触摸的相关文章

Cocos2d-x 3.0 中使用单点触摸

Cocos2d-x 3.0 中使用单点触摸 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2712 在游戏中,经常会用到触摸,大部分游戏也是通过触摸控制游戏角色运动的,在Cocos2d-x 3.0中使用了新的触摸机制,Cocos2d-x 3.0中摒弃了Cocos2d-x 2.0中将要触发的事件交给代理(delegate)处理,再通过实现代理里面的onTouchBegan等方法接收事件,最后完成事件的响应,在Cocos2d-x 3.0中只需通过创建一个

Cocos2d-x 3.0中实现多点触摸

Cocos2d-x 3.0中实现多点触摸 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2713 在上一篇<Cocos2d-x 3.0 中使用单点触摸>中介绍了在Cocos2d-x 3.0中实现单点触摸,但是有些游戏还会用到多点触摸,其中最典型的游戏是节奏大师,在节奏大师中会不断产生运动的音符,玩家需要不停地点击音符以获得高分,而且玩家可以多个手指头一起点,多个手指头一起点就是使用多点触摸实现的. 下面通过一个小的例子介绍如何在Cocos2d-x

registerWithTouchDispatcher 注册单点触摸事件

Doc: If isTouchEnabled, this method is called onEnter. Override it to change the way CCLayer receives touch events. Default: CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this,0); Example: void CCLayer::registerWithTouchDispatcher() { CC

Quick cocos2dx-Lua(V3.3R1)学习笔记(九) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧

本篇就开始讲单点触摸事件,我们在前面用UIPushButton做菜单那篇,就用了触摸事件,只不过我们感觉不出来,我们基本不需要分析触摸消息.这篇我们用一个精灵模仿出按钮效果,加强理解 至于原理,廖大在文档中讲的很清楚,就不赘叙了. Quick的触摸机制(点我点我(*^__^*)) 一般,我们按按钮的时候,总会发现,按钮按下去,按钮会缩小,松开,按钮会恢复原来的大小. function MyScene:ctor() local sprite = display.newSprite("Hello.p

Cocos2d-x实例:单点触摸事件

addChild(boxC,30, kBoxC_Tag);                                                                                         ⑥ returntrue; } 我们在HelloWorld::init()函数中初始化了场景中的背景和三个方块精灵.代码第①~④行是创建并添加背景,图8-3所示的背景是由一个128x128纹理图片(BackgroundTile.png)反复贴图上,这样可以减少内存

iOS中的四中触摸事件的详解 - 平移- 捏合 - 滑动(TouchesBegan,touchesMoved,touchesEnded,touchesCancelled)

RootViewController #import "RootViewController.h" #import "TouchView.h" #import "PanView.h" #import "PinchView.h" @interface RootViewController () @end @implementation RootViewController - (void)viewDidLoad { [super

android开发之单点触摸

相对于多点触摸,单点触摸还是很简单的. 新建一个工程,先看看布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="

多点触摸与单点触摸接口主要区别【转】

转自:http://blog.csdn.net/eleven_yy/article/details/7723079 上发单点触摸事件 input_report_key(input,ABS_MT_TRACKING_ID,0); input_report_key(input, BTN_TOUCH, 1); input_report_abs(input, ABS_MT_POSITION_X, ts->tc.x1); input_report_abs(input, ABS_MT_POSITION_Y,

quick-cocos2d-x游戏开发【9】——单点触摸

quick的触摸机制,我想廖大已经在这篇文章里说的很清楚了,我们这些小辈们就是在他的基础上完备一下,说说用法就可以了,嘿嘿. 在2.2.3之前的版本(不包括2.2.3),触摸机制和廖大在那篇文章里面的说的一样,添加触摸响应采用addTouchEventListener来完成,不过在此之后,对触摸机制就进行了完全的改写,和cocos2dx 3.0的版本一样,采用更加灵活的CCNode事件分发机制. 如果你对cocos 3.0中触摸机制很了解,那么quick的触摸使用起来也很方便.直接来看怎么用.