400-650-7353
您所在的位置:首页 > IT干货资料 > unity > 【Unity基础知识】Cocos2d-x事件机制

【Unity基础知识】Cocos2d-x事件机制

  • 来源:Unity干货资料
  • 2020-11-11 14:59:52
  • 阅读()
  • 分享
  • 手机端入口

简介

游戏中会有各种各样的处理用户输入的需求,例如当玩家按下了某个按键则飞机会发射一颗子弹,三消游戏中拖动屏幕中的方块移动会触发与其边上的方块交换等。

那么在Cocos2d-x引擎中这部分功能是如何实现的呢?答案是通过事件分发机制响应用户事件,引擎不仅内置了常见的事件如触摸事件,键盘事件等,而且还提供了创建自定义事件的方法以满足我们在游戏的开发过程中特殊的事件响应需求。今天就来为大家讲解在Cocos2d-x引擎中如何使用事件分发机制来处理用户的输入。

事件相关基本概念

首先我们要搞清楚与事件相关的三个基本元素,它们分别为:

(1)事件监听器:负责接收事件,并执行预定义的事件处理函数

(2)事件分发器:负责发起通知

(3)事件对象:记录事件的相关信息

监听器的类型

监听器总共有5种类型,分别为:

(1)EventListenerTouch - 响应触摸事件

(2)EventListenerKeyboard - 响应键盘事件

(3)EventListenerAcceleration - 响应加速度事件

(4)EventListenMouse - 响应鼠标事件

(5)EventListenerCustom - 响应自定义事件

【Unity基础知识】Cocos2d-x事件机制

接下来重点给大家介绍触摸事件和键盘事件。

触摸事件

触摸事件是手机游戏中最重要的事件,它易于创建,还能提供多种多样的功能。当你触摸移动设备的屏幕时,设备获取到触控位置,同时取得触控的内容,最后在程序中响应这个过程,这就是触摸事件流程处理。可以按照以下步骤进行:

// 创建一个"one by one" 触摸事件监听器(同时只能响应单点触摸)

auto listener1 = EventListenerTouchOneByOne::create();

// 给监听器追加响应回调函数-开始触摸

listener1->onTouchBegan = [](Touch* touch, Event* event){

//在这里处理核心业务逻辑

return true;

};

// 给监听器追加响应回调函数-触摸中移动

listener1->onTouchMoved = [](Touch* touch, Event* event){

//核心业务代码

};

// 给监听器追加响应回调函数-结束触摸

listener1->onTouchEnded = [=](Touch* touch, Event* event){

// 核心业务代码

};

//添加监听器

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, this);

可以看到,在使用触摸事件监听器时,可以监听三种不同的事件,每一个事件都有自己触发的时机。

三种事件及其触发时机:

(1)onTouchBegan 开始触摸屏幕时

(2)onTouchMoved 触摸屏幕,同时在屏幕上移动时

(3)onTouchEnded 结束触摸屏幕时

键盘事件

对于桌面游戏,一般需要通过键盘做一些游戏内的控制,这时你就需要监听键盘事件。Cocos2d-x 支持键盘事件,就像上节介绍的触摸事件一样。

创建键盘事件监听器:

auto listener = EventListenerKeyboard::create();

//绑定按键按下事件与按键抬起事件

listener->onKeyPressed = CC_CALLBACK_2(KeyboardTest::onKeyPressed, this);

listener->onKeyReleased = CC_CALLBACK_2(KeyboardTest::onKeyReleased, this);

//添加监听器到事件派发器

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

// 按键按下回调函数

void KeyboardTest::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)

{

log("Key with keycode %d pressed", keyCode);

}

// 按键抬起回调函数

void KeyboardTest::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)

{

log("Key with keycode %d released", keyCode);

}

可以看到,在使用键盘事件监听器时,可以监听两种不同的事件,每一个事件都有自己的触发时机。

两种事件及触发时机:

onKeyPressed 按键被按下时

onKeyReleased 按下状态的按键被放开时

文章“【Unity基础知识】Cocos2d-x事件机制”已帮助

>>本文地址:https://www.ujiuye.com/zhuanye/2020/60457.html

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
  • 大前端大前端
  • 大数据大数据
  • 互联网营销互联网营销
  • JavaJava
  • Linux云计算Linux
  • Python+人工智能Python
  • 嵌入式物联网嵌入式
  • 全域电商运营全域电商运营
  • 软件测试软件测试
  • 室内设计室内设计
  • 平面设计平面设计
  • 电商设计电商设计
  • 网页设计网页设计
  • 全链路UI/UE设计UI设计
  • VR/AR游戏开发VR/AR
  • 网络安全网络安全
  • 新媒体与短视频运营新媒体
  • 直播带货直播带货
  • 智能机器人软件开发智能机器人
 

快速通道fast track

近期开班时间TIME