话不多言,干货已经备全
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, 还真是有许多的不适应:
3.无法使用断点调试,只能通过打印日志定位问题
虽然有很多问题相较于以前的语言编程,但为啥还要用 Lua 脚本呢, 说到脚本,当然, Lua 有自己的有点:
1.Lua作为轻量级脚本语言,便于上手开发
2.最重要的是,使用Lua 便于实现热更新