Cocos2d-x 3.2 Lua示例 ClickAndMoveTest(点击移动测试)
本篇博客介绍Cocos2d-x 3.2Lua示例中点击移动的例子,在这个例子你可以得到如何创建单点触摸的事件和注册事件监听回调方法。
示例代码:
--[[
ClickAndMoveTest.lua
点击与移动
]]--
-- 获取屏幕尺寸
local size = cc.Director:getInstance():getWinSize()
local layer = nil -- 层
local kTagSprite = 1 --精灵标记
local function initWithLayer()
local sprite = cc.Sprite:create(s_pPathGrossini)
-- 添加颜色层,黄色
local bgLayer = cc.LayerColor:create(cc.c4b(255,255,0,255))
layer:addChild(bgLayer, -1)
-- 添加
layer:addChild(sprite, 0, kTagSprite)
-- 设置精灵位置到(20,150)
sprite:setPosition(cc.p(20,150))
-- 执行跳的动作,第一个参数为持续时间,第二个参数为位置,第三个参数为跳的高度,第四个参数跳的次数
sprite:runAction(cc.JumpTo:create(4, cc.p(300,48), 100, 4))
-- 背景层执行无限重复的动作序列,先淡进,再淡出
bgLayer:runAction(cc.RepeatForever:create(cc.Sequence:create(
cc.FadeIn:create(1),
cc.FadeOut:create(1))))
-- 触摸开始
local function onTouchBegan(touch, event)
return true
end
-- 触摸结束
local function onTouchEnded(touch, event)
-- 获取点击位置
local location = touch:getLocation()
-- 根据标记获取子节点
local s = layer:getChildByTag(kTagSprite)
s:stopAllActions()-- 停止所有动作
-- 执行移动动作,移动到点击的位置
s:runAction(cc.MoveTo:create(1, cc.p(location.x, location.y)))
local posX, posY = s:getPosition() -- 获取精灵的位置
local o = location.x - posX -- X轴的距离
local a = location.y - posY -- Y轴的距离
local at = math.atan(o / a) / math.pi * 180.0 --求角度 ,反正切函数求弧度/π*180.0
--1弧度= 180/π, 1度=π/180
-- 点击位置在下边
if a < 0 then
-- 点击位置在左边
if o < 0 then
at = 180 + math.abs(at)
else
-- 点击位置在右边
at = 180 - math.abs(at)
end
end
-- 执行旋转的动作
s:runAction(cc.RotateTo:create(1, at))
end
-- 单点触摸的监听器
local listener = cc.EventListenerTouchOneByOne:create()
-- 注册两个回调监听方法
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = layer:getEventDispatcher()-- 时间派发器
-- 绑定触摸事件到层当中
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)
return layer
end
--------------------------------
-- Click And Move Test
--------------------------------
function ClickAndMoveTest()
cclog("ClickAndMoveTest")
local scene = cc.Scene:create()
layer = cc.Layer:create()
initWithLayer()
scene:addChild(layer)
scene:addChild(CreateBackMenuItem())
return scene
end
Cocos2d-x有两种触摸事件,一种是单点触摸,一种是多点触摸,本篇博客例子使用的单点触摸事件。
EventListenerTouchOneByOne类
-- 单点触摸的监听器
local listener = cc.EventListenerTouchOneByOne:create()
-- 注册两个回调监听方法
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = layer:getEventDispatcher()-- 时间派发器
-- 绑定触摸事件到层当中
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)
最后的一个方法绑定节点到监听器中去,触摸优先级越低的越先被触摸。相同优先级的,后添加的先被触。
如果觉得博文对您有用处,请到下面链接为小巫投上神圣的一票。
分享到:
相关推荐
这是书籍 Cocos2d-x实战:Lua卷(第2版)的代码,关东升老师的,这里分享出来。除了章节的小示例代码外,还有一个《迷失航线》的游戏示例代码。这是一个下载地址。
第1章 Cocos2D-X引擎的介绍 1 1.1 何为游戏引擎 1 1.1.1 游戏的核心—引擎 1 1.1.2 引擎的特点 2 1.1.3 知名的引擎介绍 4 1.1.4 引擎的分类 5 1.2 Cocos2D-X引擎的来历 8 1.3 引擎的版本 9 1.4 下载与安装 10 1.5 ...
lua_c++ 交互原理 cocos2d手动绑定示例 cocos2d自动绑定工具:环境配置,使用详细说明,使用见解 试用于想要了解lua绑定的新人
cocos2d-x-lua测试案例修复了cocos2d-x LUA示例代码,并使其可以在 Ko, Cocos Code IDE更新中
cocos2d-Lua示例demo源码踩虫子-MOD美国大兵
快速界面控制 快速 cocos2d-x uicontrol 示例
Cocos2d-lua示例(一)排行榜之TableView-附件资源
cocos2dx-lua 自定义事件类
MoonWarriors-lua是为了学习Cocos2d-x Lua开发而移植的Quick-Cocos2d-x版本。移植过程中,体验了一回JS代码到Lua代码的各自语法特性。 1、增加了屏幕分辨率适配。 2、修复了原版本的偶尔屏幕卡顿问题。 界面载图: ...
入门 运行安装程序脚本,它将自动下载其依赖项 ...SDKBOX示例使用共享的cocos2d-x二进制文件来减少下载 文献资料 有关更多信息,请查看 跑步 在发布模式下编译: cocos run -p android -m release
#cocos2dx 播放视频插件 ##停止维护 貌似看到cocos2dx v3 版已经自带了一个videoplayer, 所以这个就停止维护了! ##特性: lua绑定 播放完成事件回调 支持android, ios平台 ##使用示例: -- 播放完之后的回调函数 local...
1,在cocos2dx下可用的验证文件md5代码 2,代码的使用示例 你可以用验证文件md5的方式,防止游戏所需资源文件被篡改