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 SPEED = 30.0
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()
layer:setAccelerometerEnabled(true)
local bg = cc.Sprite:create("BackgroundTile.png", cc.rect(0, 0, size.width, size.height))
bg:getTexture():setTexParameters(gl.LINEAR, gl.LINEAR, gl.REPEAT, gl.REPEAT)
bg:setPosition(cc.p(size.width/2, size.height/2))
layer:addChild(bg, 0)
local ball = cc.Sprite:create("Ball.png")
ball:setPosition(cc.p(size.width/2.0, size.height/2.0))
layer:addChild(ball, 10)
local function accelerometerListener(event,x,y,z,timestamp)
cclog("{x = %f, y = %f}", x, y)
local ball = event:getCurrentTarget()
local s = ball:getContentSize()
local p0x,p0y = ball:getPosition()
local p1x = p0x + x * SPEED
if (p1x - s.width/2) < 0 then
p1x = s.width/2
end
if (p1x + s.width / 2) > size.width then
p1x = size.width - s.width / 2
end
local p1y = p0y + y * SPEED
if (p1y - s.height/2) < 0 then
p1y = s.height/2
end
if (p1y + s.height/2) > size.height then
p1y = size.height - s.height/2
end
ball:runAction(cc.Place:create(cc.p( p1x, p1y)))
end
-- 创建一个加速度监听器
local listerner = cc.EventListenerAcceleration:create(accelerometerListener)
self:getEventDispatcher():addEventListenerWithSceneGraphPriority(listerner, ball)
return layer
end
return SettingScene