Cocos2d-x lua 是 Cocos2d-x引擎添加了Lua绑定的版本。使用C++和Cocos2d-x引擎开发时,编写的代码是直接调用Cocos2d-x引擎的API,因为Cocos2d-x引擎也是使用C++编写的,所以无需进行语言转换。而使用Lua和Cocos2d-x编码时,编写的代码必须通过LuaEngine引擎执行,LuaEngine引擎封装了Cocos2d-x引擎的API,所以相当于使用Lua脚本在调用Cocos2d-x的API。了解相关信息可以看一下两个网站
先决条件:
.安装cocos studio 最新版本
.安装vs2015【visual studio】
.Python2.7
cocos studio创建好项目后 直接
1点击 菜单 =》项目 =》发布与打包
2根据发布类型进行发布
代码结构参考:
【在Xcode工程 我们需要关注的代码都在 目录Resources/src/app/views 下面】
发布的csb文件就是场景的文件,具体看一下代码实例
local size = cc.Director:getInstance():getWinSize()
--注意路径
local TestScene = require("app/views/TestScene")
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
-- 载入csb文件
MainScene.RESOURCE_FILENAME = "MainScene.csb"
function MainScene:onCreate()
local isShow = false
local director = cc.Director:getInstance()
--载入csb文件
local root = cc.CSLoader:createNode("MainScene.csb")
self:addChild(root)
-- 外部的 容器
local rootP = root:getChildByName("rootP")
--拿到图片
local img = rootP:getChildByName("Center_img")
--显示&隐藏 图片
local btn_left = root:getChildByName("Button_left")
btn_left:addTouchEventListener(function(sender, evt)
if evt == 2 then
print("坦克 ---> 左按钮")
--self:getApp():enterScene("TestScene")
if not(isShow) then
print("来到了 没显示")
--显示
img:setVisible(true)
isShow = true
else
print("来到了 显示")
img:setVisible(false)
isShow = false
end
end
end)
local ang = 0;
--使图片 旋转, 缩放 并改变 不透明度
local btn_right = rootP:getChildByName("Button_right")
btn_right:addClickEventListener(function(sender)
print("坦克 --<< 右边按钮被点击")
ang = ang + 30
--旋转
img:setRotation(ang)
--缩放
img:setScale(ang / 360)
--透明度
local opa = 30
local realOpa = ang / 360 * 255
if (realOpa <= 30) then
realOpa = opa
end
img:setOpacity (realOpa)
if(ang >= 360) then
ang = 0
end
end)
--push到别的场景
local addLayerBtn = rootP:getChildByName("Button_NextScene")
addLayerBtn:addClickEventListener(function(sender)
print("添加层")
--1. 需要跳转的场景
local testScene = TestScene.create()
--2. 过度动画
local ps = cc.TransitionJumpZoom:create(1.0, testScene)
--3. 让 Director 进行场景跳转
director:pushScene(ps)
end)
--弹出对话框, 底部有遮罩
local maskLayBtn = rootP:getChildByName("Button_MaskLayer")
maskLayBtn:addClickEventListener(function(sender)
print("弹出遮罩")
--获取 登录Layer
local maskLayer = cc.CSLoader:createNode("LoadingMaskLayer.csb")
self:addChild(maskLayer)
local maskRootP = maskLayer:getChildByName("Panel_bg")
--账号
local countT = maskRootP:getChildByName("TextField_count")
--密码
local pwdT = maskRootP:getChildByName("TextField_pwd")
--登录按钮
local loadBtn = maskRootP:getChildByName("Button_login")
loadBtn:addClickEventListener(function(sender)
--获取输入框中的文本
--print(countT:getStringValue())
if (countT:getStringValue() == "" or pwdT:getStringValue() == "") then
print("账号或密码为空提示")
--弹出提示框: 账号或密码错误
local warmLayer = cc.CSLoader:createNode("WarmingLayer.csb")
self:addChild(warmLayer)
local rootP = warmLayer:getChildByName("Panel_WarmBg")
-- 提示框的内容
local warmTitle = rootP:getChildByName("Text_WarmTitle")
local warmContent = rootP:getChildByName("Text_WarmContent")
--设置提示框的标题
warmTitle:setText("警 告")
warmContent:setText("警告: 你似乎没有输入账\n号或者密码, 所以是无法\n登陆的 哈哈哈!")
-- 提示框 确定按钮
local sureBtn = rootP:getChildByName("Button_WarmSureBtn")
sureBtn:addClickEventListener(function(sender)
self:removeChild(warmLayer, true)
end)
else
print("移除登录画面")
self:removeChild(maskLayer, true)
end
end)
end)
end
return MainScene