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("SettingScene")
local settingScene = scene.create()
--运行场景
if cc.Director:getInstance():getRunningScene() then
cc.Director:getInstance():replaceScene(settingScene)
else
cc.Director:getInstance():runWithScene(settingScene)
end
end
xpcall(main, __G__TRACKBACK__)
require "Cocos2d"
require "Cocos2dConstants"
local size = cc.Director:getInstance():getWinSize()
local SettingScene = class("SettingScene",function()
return cc.Scene:create()
end)
function SettingScene.create()
local scene = SettingScene.new()
scene:addChild(scene:createLayer())
return scene
end
function SettingScene:ctor()
cclog("SettingScene init")
end
-- create layer
function SettingScene:createLayer()
local layer = cc.Layer:create()
--键盘事件
local function onKeyPressed(keyCode, event)
local buf = string.format("%d键按下!", keyCode)
local node = event:getCurrentTarget()
node:setString(buf)
end
local function onKeyReleased(keyCode, event)
local buf = string.format("%d键抬起!", keyCode)
local node = event:getCurrentTarget()
node:setString(buf)
end
local statusLabel = cc.Label:createWithSystemFont("没有键盘事件接受到!", "Arial", 25)
statusLabel:setPosition(cc.p(size.width/2.0, size.height/2.0))
layer:addChild(statusLabel)
local listener = cc.EventListenerKeyboard:create()
listener:registerScriptHandler(onKeyPressed, cc.Handler.EVENT_KEYBOARD_PRESSED)
listener:registerScriptHandler(onKeyReleased, cc.Handler.EVENT_KEYBOARD_RELEASED)
cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(listener, layer)
end
return SettingScene