Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计)

本篇博客介绍Cocos2d-x的第一个实例——重力加速计測试。效果图(注:这里无法模拟重力感应):

--[[
AccelerometerTest.lua
重力加速器样例
]] --返回一个层
local function AccelerometerMainLayer()
-- 返回标题
local function title()
return "AccelerometerTest"
end
-- 创建一个层
local layer = cc.Layer:create() local function onEnter()
-- 设置层加速计可用
layer:setAccelerometerEnabled(true)
-- 通过初始化文本、字体,字体大小来创建一个Label
local label = cc.Label:createWithTTF(title(), "fonts/arial.ttf", 32)
-- 加入一个子节点到容器中。參数有一个局部Z轴顺序。
layer:addChild(label, 1)
-- 设置锚点。这里为中间
label:setAnchorPoint(cc.p(0.5, 0.5))
-- 设置标签的位置
label:setPosition( cc.p(VisibleRect:center().x, VisibleRect:top().y - 50) ) -- 创建一个精灵,这里是个球
local ball = cc.Sprite:create("Images/ball.png")
-- 设置球的位置
ball:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y))
-- 将球加入到层中
layer:addChild(ball) -- 用来回调的方法
local function accelerometerListener(event,x,y,z,timestamp)
-- 获取当前目标
local target = event:getCurrentTarget()
-- 获取目标大小。也就是球的大小
local ballSize = target:getContentSize()
-- 获取目标的位置
local ptNowX,ptNowY = target:getPosition()
-- 计算球下落的位置
ptNowX = ptNowX + x * 9.81
ptNowY = ptNowY + y * 9.81 -- math.floor是向下取整,比如(5.0)向下取整为5
local minX = math.floor(VisibleRect:left().x + ballSize.width / 2.0)
local maxX = math.floor(VisibleRect:right().x - ballSize.width / 2.0)
if ptNowX < minX then
ptNowX = minX
elseif ptNowX > maxX then
ptNowX = maxX
end local minY = math.floor(VisibleRect:bottom().y + ballSize.height / 2.0)
local maxY = math.floor(VisibleRect:top().y - ballSize.height / 2.0)
if ptNowY < minY then
ptNowY = minY
elseif ptNowY > maxY then
ptNowY = maxY
end target:setPosition(cc.p(ptNowX , ptNowY))
end -- 创建一个重力加速计事件监听器
local listerner = cc.EventListenerAcceleration:create(accelerometerListener)
-- 获取事件派发器然后设置触摸绑定到精灵,优先级为默认的0
layer:getEventDispatcher():addEventListenerWithSceneGraphPriority(listerner,ball)
end -- 退出,设置加速计不可用
local function onExit()
layer:setAccelerometerEnabled(false)
end -- 节点点击时间回调
local function onNodeEvent(event)
if "enter" == event then
onEnter()
elseif "exit" == event then
onExit()
end
end -- 注冊脚本句柄
layer:registerScriptHandler(onNodeEvent) return layer
end -- 主方法
function AccelerometerMain()
cclog("AccelerometerMain")
-- 创建一个场景
local scene = cc.Scene:create()
-- 将层加入到场景中
scene:addChild(AccelerometerMainLayer())
-- 加入返回主菜单项
scene:addChild(CreateBackMenuItem())
--
return scene
end

笔者在代码中进行详细的凝视,每个样例是一个场景(Scene),场景中加入我们须要展示的层(Layer),层中显示我们的控件(Sprite)。

这个样例涉及到了几个知识点:

1. 场景Scene

2. 层Layer

3. 标签Label

4. 精灵Sprite

5. 设置加速计

6. 设置位置

7. 设置锚点

8. 设置加速计事件监听器

9. 注冊脚本句柄函数回调

刚開始学习的人可能对以上这些知识点比較疑惑,笔者是怎样解惑的呢?首先我们须要了解最基础的东西,比方导演类、场景、层与精灵之间的关系,分别代表什么,怎样进行创建。这是我们最起码要知道。Cocos2d-x官网也为我们提供了对应的基础教程,我们能够先了解相关基础概念。让自己大概知道Cocos2d-x这个东西能做些什么,然后再细化去学习。Cocos2d-x提供的API是非常丰富的,但我们不可能全部API都能记得住,但我们最起码须要知道怎样去查询详细API的含义和用法。比方我们能够到http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/index.html查询我们并不太熟悉的API。我们能够从中了解到类之间的继承关系。还有相关类的成员函数和成员变量,这对我们使用API是有非常大帮助的。

比方我要查询导演类,我就能够在搜索框输入Director,然后我们就能够查询到详细类的參考。

本篇博客就介绍到这里,希望能帮助到大家。

Cocos2d-x 3.1.1 Lua实例-AccelerometerTest(重力加速计)的更多相关文章

  1. 以一则LUA实例说明敏捷开发中“分离构造和使用”原则

    分离构造和使用 构造含义是功能的实现, 此功能是一个定义明确的处理过程, 开放出明确的接口给调用者使用. 则使用者可以直接调用接口进行使用, 但是使用者需要搞清楚, 那些是构造, 那些是使用. 不要再 ...

  2. Cocos2d Lua 越来越小样本 内存游戏

    1.游戏简介 一个"记忆"类的比赛游戏.你和电脑对战,轮到谁的回合,谁翻两张牌,假设两张牌一样.就消掉这两张牌,得2分,能够继续翻牌,假设两张牌不一样,就换一个人.直到最后.看谁的 ...

  3. Cocos2d-x 3.X手游开发实例详解

    Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰 ...

  4. 在cocos code ide的基础上构建自己的lua开发调试环境

    对于一种语言,其所谓开发调试环境, 大体有以下两方面的内容: 1.开发, 即代码编写, 主要是代码提示.补齐, 更高级一点的如变量名颜色等. 2.调试, 主要是运行状态下断点.查看变量.堆栈等. 现在 ...

  5. cocos2d-x 使用Lua

    转自:http://www.benmutou.com/blog/archives/49 1. Lua的堆栈和全局表 我们来简单解释一下Lua的堆栈和全局表,堆栈大家应该会比较熟悉,它主要是用来让C++ ...

  6. C#与lua相互调用

    Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. (一)C#调用Lua 测试环境:在VS2015中建一个C# ...

  7. Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本

    一.引言         学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何编写L ...

  8. 一个简易版本的lua debugger实现

    introduction 工欲善其事,必先利其器.lua作为一门动态语言,虽然我已经习惯了使用print来进行代码调试,但是还是有很多童鞋觉得一款好用的调试器能更好的进行lua代码编写.所以在以前接手 ...

  9. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

随机推荐

  1. spark集群安装配置

    spark集群安装配置 一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoo ...

  2. js实现图片上传预览及进度条

    原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...

  3. WPF DataGrid 增加"更新"模板列,根据行Row的选择而显示"更新"按钮

    SelectionMode="Single" <DataGridTemplateColumn Header=""> <DataGridTemp ...

  4. MSSQL - 根据时间倒序删除第一行数据

    delete top(1) from Tb_PaintOut where PaintNumber = (select top (1) PaintNumber from Tb_PaintOut orde ...

  5. 将258.369 double值转为内存表示(科学计数法)

    前言 庖丁解牛 - <<庄子>> 庖丁为文惠君解牛,手之所触, 肩之所倚, 足之所履, 膝之所踦, 砉然向然, 奏刀騞然, 莫不中音, 合于<桑林>之舞, 乃中&l ...

  6. 1.0.2-学习Opencv与MFC混合编程之---为播放AVI视频添加滑动条

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961642 版本1.0.2新增内容 Ø  全局变量和函数的添加: 在CVMFCview.cpp文件 ...

  7. 能够返回运行结果的system函数加强版本号

    /*********************************************************************  * Author  : Samson  * Date   ...

  8. Eclipse中提高Android SDK Manager下载速度方法

    在Windows-System32-drivers-ect目录下找到hosts文件 打开hosts文件(用记事本打开就可以),在文件以下填上一下内容: 203.208.46.146 www.googl ...

  9. 海美迪Q系列视频文明书

    海美迪Q系列视频文明书

  10. 静态书架和js模拟翻书效果

    书籍图片随便找了个,有点难看,须要的自己替换个好看点的png格式图片 源代码下载:http://download.csdn.net/detail/sweetsuzyhyf/7604091