quick-cocos2d-x游戏开发【12】——硬件按键事件

在quick中,对于按键事件也进行了重新封装,和node的触摸事件一样,也是通过addNodeEventListener来实现。所谓按键事件,主要是针对于android设备中的返回键“back”和菜单键“menu”的响应,在前面的一篇博文中我也简单提过一次,不过咱们还是系统性的来学习一下。

首先清楚预定义的层事件有两个,

  • cc.ACCELERATE_EVENT     - 重力感应事件
  • cc.KEYPAD_EVENT                - 硬件按键事件

触摸事件属于预定义节点事件,有这么几个,

  • cc.NODE_EVENT - enter, exit 等事件
  • cc.NODE_ENTER_FRAME_EVENT - 帧事件
  • cc.NODE_TOUCH_EVENT - 触摸事件
  • cc.NODE_TOUCH_CAPTURE_EVENT - 捕获触摸事件

要实现一个按键响应事件主要就两步,

1.打开键盘功能setKeypadEnabled(true)

2.添加事件监听addNodeEventListener

例如这样写,

 local layer = display.newLayer()
    self:addChild(layer)
    layer:setKeypadEnabled(true)
    layer:addNodeEventListener(cc.KEYPAD_EVENT, function (event)
        --do things
    end)

回调函数中event参数只有一个字段“key”,可以判断获取key是back还是menu,

这样一来,按键事件就算掌握了,使用device类提供的对话框咱们来测试下,当然这个最好是真机测试了,

function MyScene:ctor()	

    local layer = display.newLayer()
    self:addChild(layer)
    layer:setKeypadEnabled(true)
    layer:addNodeEventListener(cc.KEYPAD_EVENT, function (event)
        if event.key == "back" then
            print("back")
            device.showAlert("Confirm Exit", "Are you sure exit game ?", {"YES", "NO"}, function (event)
                if event.buttonIndex == 1 then
                    CCDirector:sharedDirector():endToLua()
                else
                    device.cancelAlert()
                end
            end)

        elseif event.key == "menu" then
            print("menu")
        end
    end)

end

时间: 2024-10-29 19:06:53

quick-cocos2d-x游戏开发【12】——硬件按键事件的相关文章

Unity3D游戏开发中的C#事件

    Unity3D是现在越来越流行的3D游戏引擎,它支持JavaScript,c#和Boo语言.其中C#有一个内置的事件机制,为了响应一个GameObject的事件分发,你通常要建立一个脚本继承MonoBehaviour并且实现你需要的方法.比如你想对鼠标悬停作出反应,就要创建OnMouseOver方法.通常代码会像这个样子: void OnMouseOver () { renderer.material.color = Color.red; } 复制代码 但如果想通知另外一个对象响应这个事

史上最全最完整的IOS 游戏开发 PDF电子书定制下载

<iOS 5游戏开发>作者:(新西兰)James·Sugrue著 页数:191 出版社:北京市:人民邮电出版社 出版日期:2012.08 简介:<iOS5游戏开发>是一本iOS5游戏开发的基础入门书.全书使用通俗易懂的简单实例,带领读者经历构建经典动作游戏的整个周期.读者在本书的阅读过程中,将经历从开发概念.规划设计一直到编写实际代码的全过过程.本书的每一章,都将演示游戏创建过程中的一个逻辑步骤,读者将在其中学习如何创建Sprite,用触摸屏.重力感应器和屏幕游戏棒控制玩家角色等-

quick-cocos2d-x游戏开发【13】——节点生命周期事件,帧事件等其他事件

在前面已经学过了"触摸事件","触摸捕获事件","按键事件",此外,quick还有其他几个事件,前面已经列过有这些, 预定义的节点事件: cc.NODE_EVENT - enter, exit 等事件 cc.NODE_ENTER_FRAME_EVENT - 帧事件 cc.NODE_TOUCH_EVENT - 触摸事件 cc.NODE_TOUCH_CAPTURE_EVENT - 捕获触摸事件 预定义的层事件: cc.ACCELERATE_EVENT

使用 Cocos2d 3.1.1 创建 Windows Phone 8 游戏开发环境

cocos2d-x 是目前流行的游戏游戏开发框架,目前最新的版本是 3.1.1, 网上有些教程已经比较老了,本文将会介绍如何使用最新的 3.1.1 创建 Windows Phone 8 开发环境. 本文假设你已经安装了 VS2012 或者 VS2013,并且已经安装了 Windows Phone8 的 SDK. 一.下载和安装 Cocos2d-x 官网地址:http://www.cocos2d-x.org/ 点击菜单栏中的 Download, 进入下载页面. 我们下载最新的 V3.1.1,新版功

Cocos2d-x场景切换我换换换!----之游戏开发《赵云要格斗》(12)

这里是Evankaka的博客,欢迎大家前来讨论与交流------        转载请注明出处http://blog.csdn.net/evankaka/article/details/42883881 本文主要讲讲用Cocos Studio制作的登录界面,来设计一个层类,然后根据这个登录界面的选择,跳转到不同的场景.其中,本文用到的界面可参看上篇Cocos2d-x使用Cocos Studio制作界面并应用---之游戏开发<赵云要格斗>(11) cocos2d-x版本:2.2.5 工程环境:w

Android研究之游戏开发处理按键的响应

1.onKeyDown 方法 onKeyDown 方法是KeyEvent.Callback 接口中的一个抽象方法,重写onKeyDown 方法可以监听到按键被按下的事件,我们先看看onKeyDown方法的函数原型. 第一个参数为键值,手机中每一个按钮都拥有一个完全独立的键值 通过按键键值就可以确定当前按下的是那一个按键. 第二个参数为按键事件,  该对象中保存着当前按键的所有信息 比如 按键发生的时间 按键发生的次数  按键发生的类型等等. 通过以上两个参数就可以拿到当前按键事件的所附带的一切信

OUYA游戏开发快速入门教程1.2OUYA的硬件规格

OUYA游戏开发快速入门教程1.2OUYA的硬件规格 从官网上购买回来的OUYA产品,包含游戏主机.游戏控制杆.说明书.电源线.HDMI线.电源线和电池,如图1-2所示.本节就来简要介绍下,游戏主机和游戏控制杆的硬件规格.本文选自OUYA游戏开发快速入门教程 图1-2  Ouya游戏主机系统的各部分 1.2.1  游戏主机 游戏主机各个角度的视图,如图1-3所示,它的硬件规格是: 图1-3  游戏主机各个角度的视图 提示:图中标出了OUYA主机开关所在的位置,它类似于计算机主机箱上的系统开关,用

cocos2d 游戏开发实战

文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 "hello world" 6.2.1   显示一个飞船 6.3   精灵 6.4   開始 space viking 之旅 6.4.1   添加 sneakyinput 6.5   精灵的移动效果,旋转效果 6.6   定时器效果 6.7   启动 cocos2d,默认竖屏 6.8   检

[ios5 cocos2d游戏开发实战] 笔记3-FileUtils, notificationCenter

FileUtils //文件管理工具 FileUtils::getInstance() std::string getStringFromFile(const std::string& filename);//读取文件中的字符串 Data getDataFromFile(const std::string& filename);//获取文件数据 void setSearchPaths(const std::vector<std::string>& searchPaths