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

本篇就开始讲单点触摸事件,我们在前面用UIPushButton做菜单那篇,就用了触摸事件,只不过我们感觉不出来,我们基本不需要分析触摸消息。这篇我们用一个精灵模仿出按钮效果,加强理解

至于原理,廖大在文档中讲的很清楚,就不赘叙了。

Quick的触摸机制(点我点我(*^__^*))

一般,我们按按钮的时候,总会发现,按钮按下去,按钮会缩小,松开,按钮会恢复原来的大小。

function MyScene:ctor()

	local sprite = display.newSprite("Hello.png")
	sprite:align(display.CENTER,display.cx,display.cy)
	sprite:addTo(self) 

	--下面就是单点触摸的用法
	sprite:setTouchEnabled(true)  						--设置这个精灵是否能触摸
	sprite:setTouchMode(cc.TOUCH_MODE_ONE_BY_ONE)		--触摸模式。我们传进单点触摸模式进去
	sprite: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
			sprite:setScale(0.9)
		    elseif event.name == "moved" then
		       -- sprite:setPosition(cc.p(x,y))
		    elseif event.name == "ended" then
		        sprite:setScale(1)
		    end

	    return true
	end)

end

在代码中,我已经注释好关键的地方了

对于这个cc.NODE_TOUCH_EVENT,这是引擎定义好的事件,下面就是cocos2dx 的引擎时间,我们就用的触摸事件

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

c.NODE_TOUCH_CAPTURING_PHASE = 0
c.NODE_TOUCH_TARGETING_PHASE = 1

还有一个疑问就是event,我们要如何得知它里面有哪些东西呢,别怕,quick为我们封装了这个函数----dump函数

这个函数可以帮我们输出穿进去参数所有内容,当然,如果参数镶嵌层数太深(这个函数默认为3层),你可以在第三个参数穿想要输出多少层。具体用法,自己看源码即可。

我们在回调函数加个dump(event)

好了,看的很清楚。下面查看我们做的简单按钮效果图

时间: 2024-12-26 18:54:06

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

Cocos2d-x 3.1.1 学习笔记(二)创建自定义项目

一.通过命令创建项目 前面搭建好环境后,怎样创建自己的cocos2d-x项目呢? 先来看看cocos2dx 3.1的目录吧 这就是 cocos2dx 3.1的目录, 3.1版本的创建跟以前的不同了(好吧,又变了),我们先把 download-deps.py 和 setup.py 执行一遍,按住shift+鼠标右键 输入cocos命令 回车 这里会看到一些命令的声明,这里我只说下 创建新的项目,输入命令cocos new 这里 -p      是包名 -l       是文件格式 有cpp.lua

Cocos2dx 3.1.1 学习笔记整理(1)

最近手痒了,不小心下载了cocos2dx 3.1.1,又搞了个VS2012,于是头脑发热的搞起 3.1.1了. 我是有多么的不专心啊. 已经把自己之前的学习内容从2.2.3迁移到了3.1.1,除了骨骼动画相关的之外. 简单记录一下过程: 1 安装与搭建 解压cocos2dx3.1.1版本,根目录下会有download-deps.py和setup.py, 预先用python分别对这两个文件跑一遍,有问题的话解决问题,没问题的话最好了. 2新建项目 跑完以上两个py文件之后,会自己将所有相关的系统环

基于Cocos2dx+Lua v3.x的RichLabel

RichLabel 简介 RichLabel基于Cocos2dx+Lua v3.x解析字符串方面使用了labelparser,它可以将一定格式的字符串,转换为lua中的表结构扩展标签极其简单,只需添加一个遵守规则的标签插件即可,无需改动已存在代码!!! (标签插件都在labels文件夹下) labelparser的详解labelparser在github上的源码RichLabel在github上的源码 支持图片(缩放,旋转,是否可见) 支持文本属性(字体,大小,颜色,阴影,描边,发光) 支持标签

APUE 学习笔记(九) 高级I/O

1. 非阻塞I/O 低速系统调用时可能会使进程永远阻塞的一类系统调用,包括以下调用: (1)某些文件类型你(网络socket套接字.终端设备.管道)暂无可使用数据,则读操作可能会使调用者永远阻塞 (2)如果数据不能立即被(1)中文件类型接受,则写操作会使调用者永远阻塞 (3)某些进程间通信函数 非阻塞I/O使我们可以调用open.read.write这样的I/O操作,并使这些操作不会永远阻塞,如果这种操作不能完成,则调用立即出错返回 对于一个给定的文件有两种方法对其指定非阻塞I/O: (1)调用

python学习笔记九——文件与目录

1.python进行文件读写的函数是open或file类 mode:r  只读 r+   读写 w  写入,先删除原文件,再重新写入,如果文件没有则创建 w+  读写,先删除原文件,再重新写入,如果文件没有则创建(可写入和输出) a  写入,在文件末尾追加新的内容,文件不存在则创建 a+  读写,在文件末尾追加新的内容,文件不存在则创建 b  打开二进制文件,可与r,w,a,+结合使用 U  支持所有的换行符号,"\r","\n","\r\n"

angular学习笔记(九)-css类和样式3

再来看一个选择li列表的例子: 点击li中的任意项,被点击的li高亮显示: <!DOCTYPE html> <html ng-app> <head> <title>6.3css类和样式</title> <meta charset="utf-8"> <script src="../angular.js"></script> <script src="scri

angular学习笔记(九)-css类和样式2

在上一个例子中,元素的类名使用拼接的方法,这样,类名中就不得不带有true或false,并且不易维护,所以,angular使用ng-class属性来控制元素的类名: 我们来看一个小例子,点击error按钮,顶部提示错误框,点击warning按钮,顶部提示警告框. 错误框的类名是.err,警告框的类名是.warn: <!DOCTYPE html> <html ng-app> <head> <title>6.2css类和样式</title> <

Linux System Programming 学习笔记(九) 内存管理

1. 进程地址空间 Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间 内存页是memory management unit (MMU) 可以管理的最小地址单元 机器的体系结构决定了内存页大小,32位系统通常是 4KB, 64位系统通常是 8KB 内存页分为 valid or invalid: A valid page is associated with an actual page of data,例如RAM或者磁盘上的文件 An invalid page is

虚拟机VMWare学习笔记九 - 物理机上的文件挂载到虚拟机上

物理机上的文件夹或盘符直接挂载到虚拟机上使用. VM -- Settings Options -- Shared Folders -- 勾选Always enabled , 勾选Map as a network drive in Windows guests 在点击下面的添加来添加共享的文件夹 选择路径 可以看到虚拟机中的共享文件夹已经出现在Windows 中了 虚拟机VMWare学习笔记九 - 物理机上的文件挂载到虚拟机上