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

quick的触摸机制,我想廖大已经在这篇文章里说的很清楚了,我们这些小辈们就是在他的基础上完备一下,说说用法就可以了,嘿嘿。

在2.2.3之前的版本(不包括2.2.3),触摸机制和廖大在那篇文章里面的说的一样,添加触摸响应采用addTouchEventListener来完成,不过在此之后,对触摸机制就进行了完全的改写,和cocos2dx 3.0的版本一样,采用更加灵活的CCNode事件分发机制。

如果你对cocos 3.0中触摸机制很了解,那么quick的触摸使用起来也很方便。直接来看怎么用。

在前面已经说了,我们添加的节点元素都是在scene中的,但是触摸响应不能直接给scene添加事件监听,所以我们可以用一个层来完成。并且,如果能够接受触摸响应,还需要开启触摸功能。

    local layer = display.newLayer()
    self:addChild(layer)
    layer:setTouchEnabled(true)
    layer:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)
    layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, function (event)
        local x, y, prevX, prevY = event.x, event.y, event.prevX, event.prevY

        if event.name == "began" then
             print("layer began")
        elseif event.name == "moved" then
            print("layer moved")
        elseif event.name == "ended" then
             print("layer ended")
        end

        return true
    end)

从上面的代码可以看到,可以设置触摸的模式,

cc.TOUCH_MODE_ONE_BY_ONE 是单点触摸

cc.TOUCH_MODE_ALL_AT_ONCE 是多点触摸

在添加节点事件监听addNodeEventListener中,我们设置监听事件的类型是cc.NODE_TOUCH_EVENT

这个监听事件类型,其定义了几个引擎级事件,分别是,

-- cocos2dx 引擎级事件

c.NODE_EVENT                                           = 0

c.NODE_ENTER_FRAME_EVENT           = 1

c.NODE_TOUCH_EVENT                          = 2

c.NODE_TOUCH_CAPTURE_EVENT     = 3

c.MENU_ITEM_CLICKED_EVENT            = 4

c.ACCELERATE_EVENT                            = 5

c.KEYPAD_EVENT                                       = 6

其次是event参数,在event参数里,里面有name,x,y,prevX,prevY 这五个变量,分别代表着

-- event.name 是触摸事件的状态:began, moved, ended, cancelled, added(仅限多点触摸), removed(仅限多点触摸)

-- event.x, event.y 是触摸点当前位置

-- event.prevX, event.prevY 是触摸点之前的位置

所以添加上面的代码,简单触摸屏幕,就可以看到log中的print的结果。

在触摸的回调函数function(event)中,记得考虑是否需要添加返回值,返回值的作用不用多说,true则后面的moved,ended等状态会接收到,否则接收不到,默认如果不添加则代表false。

在新版触摸机制中,还需要主要的一个就是触摸吞噬,

setTouchSwallowEnabled(true)

它的作用就是是否继续传递触摸消息,在绘制节点的时候,越是在屏幕上方,就是zOrder越大,越优先接收到触摸事件,如果设置吞噬,那么在它下方的节点都不会接收到触摸消息了。默认如果不设置则quick自动设置为true。

当然,不仅仅可以给layer添加触摸事件,你也可以给精灵添加,这就看你游戏的需要了。

时间: 2024-10-06 10:53:31

quick-cocos2d-x游戏开发【9】——单点触摸的相关文章

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="

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

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

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

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检测

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其它的植物只需触摸那个植物将其拖入到想要摆放的位置,这其实就是这节要写的触摸事件.还可以发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自动消失,这就这节要说的碰撞检测. 下面具体看代码的实现: 做ios开发有触摸事件cocos2d同样也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { private: v

【Cocos2D研究院之游戏开发】

http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Cocos2D研究院之打开全新ViewController与返回(八) 雨松MOMO [Cocos2D研究院之游戏开发] 围观5745次 17条评论          之前cocos2d的文章都是由魏凯同学维护,从今天开始我也会抽时间写点cocos2d的文章.最近在研究如何将IOS游戏与软件结合起来.通常游

quick 单点触摸

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

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   检

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

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

[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