cocos2dx lua 如何接入sdk本文将只介绍Lua版本。C++先放一边,还有,现在的Cocos Code IDE已经能够将你的项目刷到真机上测试了!!
本文对应的引擎版本和工具:
Cocos2d-x 3.2 (不要3.0与3.2混用)(点击下载)
Cocos Code IDE Build:V1.0.0.RC0(点击下载)
Visual Studio 2012 - 用来创建自定义runtime
环境配置如图,Windows环境变量的设置从略
以下步骤可以在Cocos Code IDE中运行Lua-test,并Package to APK 装到真机上测试:
-
进入Cocos Code IDE,在项目管理其空白处右击,选择Cocos Lua Project创建新项目。
-
输入一个你想要的非 nil名字,点击下一步,勾选Add Native Codes,点击Finish,IDE会用内置的项目模板给你生成原始项目
-
此时打开你的workspace,找到你的项目,会有这几个文件夹:.settings , frameworks,res,runtime,src。
-
接下来:删除src,res文件夹下的所有文件
-
找到你的Cocos2d-x 3.2,一次进入test→lua-tests。里面有project,res,src三个文件夹,30个.lua文件,一个.cocos-project.json文件
-
现在,将30个.lua文件复制到你项目的 根文件夹下,然后将res,src中的文件都复制到你项目对应的文件夹中
-
进到你项目src文件夹,里面有48个Test文件夹和这几个.lua文件:controller.lua ,helper.lua ,mainMenu.lua ,testResource.lua ,VisibelRect.lua。将controlle.lua重命名为main.lua。
-
回到Cocos Code IDE,刷新项目,就能在项目目录中看到上面提到的所有文件了。然后,选中项目,右键 → Run As → Cocos Luabinding运行
到这一步,已经在PC上面完成。
下面上图,刷到真机上:
后一步,连接你的设备到电脑,点击Refresh,找到你设备之后,Refresh会变成Install,点击即可。
还可以点击Open Package Location好到你的apk文件。
刷到你的手机里面,随时感受Cocos2d-x的魅力吧。
下面是本文“主题” - 加速器
在Cocos Code IDE一次找到src → AccelerometerTest - 打开AccelerometerTest.lua 就会见到下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
--[[
每一个test文件是一个Scene,该Scene中包含多个小test,每个test是一个层,主框架是一个Layer,包含主界面菜单,封装了所有Scene都用得到的基本功能
]]--
local function AccelerometerMainLayer()
local function title()
return "AccelerometerTest"
end
local layer = cc.Layer:create()
local function onEnter()
--首先设置layer的可加速属性为true,对layer启用加速器
layer:setAccelerometerEnabled(true)
--[[
这个是设置测试的标题:ttf字体标签,
显示内容:title()方法返回的字符串,
字体文件:fonts/arial.ttf
字体大小:32
添加到层中,设置锚点和坐标
]]--
local label = cc.Label:createWithTTF(title(), "fonts/arial.ttf", 32)
layer:addChild(label, 1)
label:setAnchorPoint(cc.p(0.5, 0.5))
label:setPosition( cc.p(VisibleRect:center().x, VisibleRect:top().y - 50) )
--生成小球 - Sprite
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)
--[[
加速事件发生时,会传出多个参数:event,x,y,z,timestamp
event:被绑定的物件发出的加速器事件,可以用getCurrentTarget()获取事件的发送者
x,y,z:加速器传递的的坐标
]]--
--获取ball
local target = event:getCurrentTarget()
--获取尺寸
local ballSize = target:getContentSize()
--获取小球初始坐标,存入ptNowX,ptNowY中,并配合加速器传来的坐标x,y进行一系列计算
local ptNowX,ptNowY = target:getPosition()
ptNowX = ptNowX + x * 9.81
ptNowY = ptNowY + y * 9.81
--设置小球活动的时候x坐标的范围
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
--设置小球活动的时候y坐标的范围
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
--将计算后的ptNowX,ptNowY设置给小球 因为ptNowX,ptNowY与加速器坐标x,y相关,是动态的,所以小球会随加速器动起来
target:setPosition(cc.p(ptNowX , ptNowY))
end
--onEnter()方法入口,注册加速事件侦听器,accelerometerListener()方法定义了事件发生时触发的相关操作(逻辑,动作。。)
local listerner = cc.EventListenerAcceleration:create(accelerometerListener)
--与ball的事件调度器绑定 --不了解cocos2d-x事件调度机制的人,留言交流
layer:getEventDispatcher():addEventListenerWithSceneGraphPriority(listerner,ball)
end
local function onExit()
layer:setAccelerometerEnabled(false)
end
--载入节点的时候,引擎自动调用onEnter(),开始布局和启用加速器
--退出的时候,调用onExit(),关闭加速器(仅对本层 关闭
local function onNodeEvent(event)
if "enter" == event then
onEnter()
elseif "exit" == event then
onExit()
end
end
--首先给layer注册节点事件,这里是读代码的入口
layer:registerScriptHandler(onNodeEvent)
return layer
end
function AccelerometerMain()
cclog("AccelerometerMain")
local scene = cc.Scene:create()
scene:addChild(AccelerometerMainLayer())
scene:addChild(CreateBackMenuItem())
return scene
end
|