Lua_创建Menu

require "Cocos2d"
require "Cocos2dConstants"

-- for CCLuaEngine traceback
function __G__TRACKBACK__(msg)
    cclog("----------------------------------------")
    cclog("LUA ERROR: " .. tostring(msg) .. "\n")
    cclog(debug.traceback())
    cclog("----------------------------------------")
    return msg
end

local function main()
    collectgarbage("collect")
    --避免内存泄漏
    collectgarbage("setpause", 100)
    collectgarbage("setstepmul", 5000)
    
    --初始化导演
    local director = cc.Director:getInstance()
    local glview = director:getOpenGLView()
    if glview == nil then
        glview = cc.GLView:createWithRect("HelloLua", cc.rect(0, 0, 960, 640))
        director:setOpenGLView(glview)
    end

    glview:setDesignResolutionSize(960, 640, cc.ResolutionPolicy.SHOW_ALL)

    --显示帧率
    director:setDisplayStats(true)

    --设置帧率
    director:setAnimationInterval(1.0 / 60)

    --增加搜索路径
    cc.FileUtils:getInstance():addSearchPath("src")
    cc.FileUtils:getInstance():addSearchPath("res")
    
    --创建场景
    local scene = require("GameScene")
    local gameScene = scene.create()
    
    --运行场景
    if cc.Director:getInstance():getRunningScene() then
        cc.Director:getInstance():replaceScene(gameScene)
    else
        cc.Director:getInstance():runWithScene(gameScene)
    end
end

xpcall(main, __G__TRACKBACK__)
require "Cocos2d"
require "Cocos2dConstants"

local size = cc.Director:getInstance():getWinSize()

local debug = true
cclog = function(...)
    if debug then
        print(string.format(...))
    end
end

local GameScene = class("GameScene",function()
    local scene = cc.Scene:createWithPhysics()
    scene:getPhysicsWorld():setDebugDrawMask(cc.PhysicsWorld.DEBUGDRAW_ALL)
    return scene
end)

function GameScene:ctor()
    self.visibleSize = cc.Director:getInstance():getVisibleSize()
    self.origin = cc.Director:getInstance():getVisibleOrigin()
end

function GameScene.create()
    local scene = GameScene.new()
    scene:addChild(scene:createMenu())

    return scene
end

function GameScene.createMenu()
    local winSize = cc.Director:getInstance():getWinSize()

    local layer = cc.Layer:create()

    --MenuItemLabel
    local label = cc.LabelTTF:create("help", "Arial", 35)
    local menuItemLabel = cc.MenuItemLabel:create(label)
    menuItemLabel:setPosition(cc.p(winSize.width/2.0, winSize.height - 100))
    local function menuItemLabelCallback()
        cclog("menuItemLabelCallback")
    end
    menuItemLabel:registerScriptTapHandler(menuItemLabelCallback)

    --MenuItemFont
    local menuItemFont = cc.MenuItemFont:create("start")
    menuItemFont:setPosition(cc.p(winSize.width/2.0, winSize.height - 150))
    local function menuItemFontCallback(sender)
        cclog("menuItemFontCallback")
    end
    menuItemFont:registerScriptTapHandler(menuItemFontCallback)

    --MenuItemSprite
    local startNormal = cc.Sprite:create("start-up.png")
    local startSelected = cc.Sprite:create("start-down.png")
    local menuItemSprite = cc.MenuItemSprite:create(startNormal, startSelected)
    menuItemSprite:setPosition(cc.p(winSize.width/2.0, winSize.height - 200))
    local function menuItemSpriteCallback(sender)
        cclog("menuItemSpriteCallback")
    end 
    menuItemSprite:registerScriptTapHandler(menuItemSpriteCallback)

    --MenuItemImage
    local menuItemImage = cc.MenuItemImage:create("setting-up.png", "setting-down.png")
    menuItemImage:setPosition(cc.p(winSize.width/2.0, winSize.height - 250))
    local function menuItemImageCallback(sender)
        cclog("menuItemImageCallback")
    end
    menuItemImage:registerScriptTapHandler(menuItemImageCallback)

    --MenuItemToggle
    local onMenuItem = cc.MenuItemImage:create("on.png", "on.png")
    local offMenuItem = cc.MenuItemImage:create("off.png", "off.png")
    local menuItemToggle = cc.MenuItemToggle:create(onMenuItem, offMenuItem)
    menuItemToggle:setPosition(cc.p(winSize.width/2.0, winSize.height - 300))
    local function menuItemToggleCallback(sender)
        cclog("menuItemToggleCallback")
    end
    menuItemToggle:registerScriptTapHandler(menuItemToggleCallback)

    local menu = cc.Menu:create(menuItemLabel, menuItemFont, menuItemSprite, menuItemImage, menuItemToggle)
    menu:setPosition(cc.p(0, 0))
    layer:addChild(menu)

    return layer
end

return GameScene


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值