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