IT培训网更多 收回

IT培训
关注我们
微信公众号 回复"大礼包"享福利 学习交流群 分享IT知识
|

IT在线学习更多 收回

热门课程 更多 >
  • Java开发
  • Web前端
  • Python+人工智能
  • 全链路UI/UE设计
  • VR/AR游戏开发
  • 大数据
  • 室内设计
  • PMP认证
  • 互联网营销
  • 全域电商运营
  • 新媒体与短视频运营
  • 软件测试
  • Linux云计算
  • Office
  • 计算机二级
  • 计算机软考
OAO训练营
不离岗 不离校 学门IT技术
优学VIP
16大类IT课程 提升职场竞争力
关注我们
下载【IT优学】 缓存视频随时随地学 微信扫码关注 回复“大礼包”享福利
| 初高中软件培训| 中公企商培训| 中公联合办学| 优校邦| 中公PMP| 中公软考| 计算机二级培训| 趣码AI
登录 | 注册
400-650-7353

精品课程

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

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

  • 来源:Unity干货资料
  • 2020-11-11 14:59:52
  • 阅读()
  • 分享
  • 手机端入口
  • 活动 5天IT课程 申请试学
  • 活动 申请免费基地参观
  • 活动 申请中公购书补助

简介

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

那么在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 按下状态的按键被放开时

学习疑问申请解答
您的姓名
您的电话
意向课程
 

中公优就业

IT小助手

扫描上方二维码添加好友,请备注:599,享学习福利。

>>本文地址:
注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

推荐阅读

优就业:ujiuye

关注中公优就业官方微信

  • 关注微信回复关键词“大礼包”,享学习福利
QQ交流群
在线疑问解答
(加群备注“网站”)
IT培训交流群 加入群聊 +
软件测试 加入群聊 +
全链路UI/UE设计 加入群聊 +
Python+人工智能 加入群聊 +
互联网营销 加入群聊 +
Java开发 加入群聊 +
PHP开发 加入群聊 +
VR/AR游戏开发 加入群聊 +
大前端 加入群聊 +
大数据 加入群聊 +
Linux云计算 加入群聊 +
优就业官方微信
扫码回复关键词“大礼包”
享学习福利

测一测
你适合学哪门IT技术?

1 您的年龄

2 您的学历

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

获取测试结果
 
课程资料、活动优惠 领取通道
 
 
  • 申请试听
  • 干货资料
  • 网课咨询
  • 学习交流群
  • 返回顶部