话不多言,干货已经备全
mai.lua
cc.FileUtils:getInstance():setPopupNotify(false)
require "config"
require "cocos.init"
local function main()
--require("app.MyApp"):create():run()
local scene = require("MainMenu"):create()
cc.Director:getInstance():runWithScene(scene)
end
local status, msg = xpcall(main, __G__TRACKBACK__)
if not status then
print(msg)
end
MainMenu.lua
local MainMenu = class("MainMenu", function ()
return cc.Scene:create()
end)
function MainMenu.create()
local scene = MainMenu.new()
return scene
end
function MainMenu:ctor()
print("MainMenu function ctor")
self:init()
end
function MainMenu:init()
print("MainMenu function init")
-- 创建层
self:showUI()
-- 创建按钮
self:addButton()
end
function MainMenu:showUI()
-- 添加图片
local winSize = cc.Director:getInstance():getVisibleSize()
local bg = cc.Sprite:create("HelloWorld.png")
bg:setPosition(cc.p(winSize.width/2, winSize.height/2))
self:addChild(bg)
-- 添加文字
local label = cc.Label:createWithSystemFont("Hello Lua", "Arial", 40)
self:addChild(label)
label:setPosition(cc.p(winSize.width/2, winSize.height/2))
end
function MainMenu:addButton()
local winSize = cc.Director:getInstance():getWinSize()
local spacing = 100;
-- MenuItemFont
local menuItemFont = cc.MenuItemFont:create("btnStart")
menuItemFont:setPosition(-winSize.width/2 + spacing, -winSize.height/2 + spacing)
local function menuItemFontCallback(sender)
print("menuItemFontCallback")
end
menuItemFont:registerScriptTapHandler(menuItemFontCallback)
-- MenuItemImage
local normal = cc.MenuItemImage:create("btn_green.png", "btn_blue.png")
normal:setPosition(-winSize.width/2 + spacing, -winSize.height/2 + spacing * 2)
normal:setTag(1)
local function menuCallback(tag, menuItem)
print("menuItem:" .. tag)
end
normal:registerScriptTapHandler(menuCallback)
-- MenuItemSprite
local normalSprite = cc.Sprite:create("btn_blue.png")
local selectedSprite = cc.Sprite:create("btn_green.png")
local menuItemSprite = cc.MenuItemSprite:create(normalSprite, selectedSprite)
menuItemSprite:setPosition(-winSize.width/2 + spacing, -winSize.height/2 + spacing * 3)
local function menuItemSpriteCallback(sender)
print("menuItemSpriteCallback")
end
menuItemSprite:registerScriptTapHandler(menuItemSpriteCallback)
--MenuItemToggle
local onMenuItem = cc.MenuItemImage:create("mute_bg_on.png", "mute_bg_on.png")
local offMenuItem = cc.MenuItemImage:create("mute_bg_off.png", "mute_bg_off.png")
local menuItemToggle = cc.MenuItemToggle:create(onMenuItem, offMenuItem)
menuItemToggle:setPosition(-winSize.width/2 + spacing, -winSize.height/2 + spacing * 4)
local function menuItemToggleCallback(sender)
print("menuItemToggleCallback")
end
menuItemToggle:registerScriptTapHandler(menuItemToggleCallback)
local menu = cc.Menu:create(menuItemFont, normal, menuItemSprite, menuItemToggle)
menu:setPosition(cc.p(winSize.width/2, winSize.height/2))
self:addChild(menu)
end
function MainMenu:onButtonClicked()
end
return MainMenu
运行结果:
从最初的C++ 语言编程,到开始接触 Lua, 还真是有许多的不适应:
1.书写代码没有调用接口的提示功能
2.接口参数不能确定数量及其类型,徐查找C++端接口代码
3.无法使用断点调试,只能通过打印日志定位问题
虽然有很多问题相较于以前的语言编程,但为啥还要用 Lua 脚本呢, 说到脚本,当然, Lua 有自己的有点:
1.Lua作为轻量级脚本语言,便于上手开发
2.最重要的是,使用Lua 便于实现热更新