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 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"
-- 定义常量
kEaseIn = 1
kEaseOut = 2
kEaseInOut = 3
kEaseSineIn = 4
kEaseSineOut = 5
kEaseSineInOut = 6
kEaseExponentialIn = 7
kEaseExponentialOut = 8
kEaseExponentialInOut = 9
kSpeed = 10
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:createAction())
return scene
end
function GameScene:createAction()
local layer = cc.Layer:create()
local bg = cc.Sprite:create("Background.png")
bg:setPosition(cc.p(size.width/2, size.height/2))
layer:addChild(bg)
local function OnClickMenu(tag, menuItemSender)
cclog("tag = %d", tag)
actionFlag = menuItemSender:getTag()
local scene = require("ActionScene")
local nextScene = scene.create()
local ts = cc.TransitionJumpZoom:create(1, nextScene)
cc.Director:getInstance():pushScene(ts)
end
local pItmLabel1 = cc.Label:createWithBMFont("fonts/fnt2.fnt","EaseIn")
local pItmMenu1 = cc.MenuItemLabel:create(pItmLabel1)
pItmMenu1:setTag(kEaseIn)
pItmMenu1:registerScriptTapHandler(OnClickMenu)
local pItmLabel2 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseOut")
local pItmMenu2 = cc.MenuItemLabel:create(pItmLabel2)
pItmMenu2:setTag(kEaseOut)
pItmMenu2:registerScriptTapHandler(OnClickMenu)
local pItmLabel3 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseInOut")
local pItmMenu3 = cc.MenuItemLabel:create(pItmLabel3)
pItmMenu3:setTag(kEaseInOut)
pItmMenu3:registerScriptTapHandler(OnClickMenu)
local pItmLabel4 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseSineIn")
local pItmMenu4 = cc.MenuItemLabel:create(pItmLabel4)
pItmMenu4:setTag(kEaseSineIn)
pItmMenu4:registerScriptTapHandler(OnClickMenu)
local pItmLabel5 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseSineOut")
local pItmMenu5 = cc.MenuItemLabel:create(pItmLabel5)
pItmMenu5:setTag(kEaseSineOut)
pItmMenu5:registerScriptTapHandler(OnClickMenu)
local pItmLabel6 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseSineInOut")
local pItmMenu6 = cc.MenuItemLabel:create(pItmLabel6)
pItmMenu6:setTag(kEaseSineInOut)
pItmMenu6:registerScriptTapHandler(OnClickMenu)
local pItmLabel7 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseExponentialIn")
local pItmMenu7 = cc.MenuItemLabel:create(pItmLabel7)
pItmMenu7:setTag(kEaseExponentialIn)
pItmMenu7:registerScriptTapHandler(OnClickMenu)
local pItmLabel8 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseExponentialOut")
local pItmMenu8 = cc.MenuItemLabel:create(pItmLabel8)
pItmMenu8:setTag(kEaseExponentialOut)
pItmMenu8:registerScriptTapHandler(OnClickMenu)
local pItmLabel9 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "EaseExponentialInOut")
local pItmMenu9 = cc.MenuItemLabel:create(pItmLabel9)
pItmMenu9:setTag(kEaseExponentialInOut)
pItmMenu9:registerScriptTapHandler(OnClickMenu)
local pItmLabel10 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Speed")
local pItmMenu10 = cc.MenuItemLabel:create(pItmLabel10)
pItmMenu10:setTag(kSpeed)
pItmMenu10:registerScriptTapHandler(OnClickMenu)
local menu = cc.Menu:create(
pItmMenu1, pItmMenu2,
pItmMenu3, pItmMenu4,
pItmMenu5, pItmMenu6,
pItmMenu7, pItmMenu8,
pItmMenu9, pItmMenu10)
menu:alignItemsInColumns(2, 2, 2, 2, 2)
layer:addChild(menu)
return layer
end
return GameScene
require "Cocos2d"
require "Cocos2dConstants"
local size = cc.Director:getInstance():getWinSize()
local ActionScene = class("ActionScene",function()
return cc.Scene:create()
end)
function ActionScene:ctor()
cclog("ActionScene init")
end
function ActionScene.create()
local scene = ActionScene.new()
scene:addChild(scene:createLayer())
return scene
end
function ActionScene:createLayer()
--速度动作
cclog("ActionScene actionFlag = %d", actionFlag)
local layer = cc.Layer:create()
local bg = cc.Sprite:create("Background.png")
bg:setPosition(cc.p(size.width/2, size.height/2))
layer:addChild(bg)
sprite = cc.Sprite:create("hero.png")
sprite:setPosition(cc.p(size.width/2, size.height/2))
layer:addChild(sprite)
local backMenuItem = cc.MenuItemImage:create("Back-up.png","Back-down.png")
backMenuItem:setPosition(cc.Director:getInstance():convertToGL(cc.p(140, 65)))
local goMenuItem = cc.MenuItemImage:create("Go-up.png","Go-down.png")
goMenuItem:setPosition(cc.Director:getInstance():convertToGL(cc.p(820, 540)))
local menu = cc.Menu:create(backMenuItem, goMenuItem)
menu:setPosition(cc.p(0, 0))
layer:addChild(menu)
local function backMenu(pSender)
cclog("ActionScene backMenu")
cc.Director:getInstance():popScene()
end
backMenuItem:registerScriptTapHandler(backMenu)
local function goMenu(pSender)
cclog("ActionScene goMenu")
local ac1 = cc.MoveBy:create(2, cc.p(200, 0))
local ac2 = ac1:reverse()
local ac = cc.Sequence:create(ac1, ac2)
if actionFlag == kEaseIn then
sprite:runAction(cc.EaseIn:create(ac, 3))
elseif actionFlag == kEaseOut then
sprite:runAction(cc.EaseOut:create(ac, 3))
elseif actionFlag == kEaseInOut then
sprite:runAction(cc.EaseInOut:create(ac, 3))
elseif actionFlag == kEaseSineIn then
sprite:runAction(cc.EaseSineIn:create(ac))
elseif actionFlag == kEaseSineOut then
sprite:runAction(cc.EaseSineOut:create(ac))
elseif actionFlag == kEaseSineInOut then
sprite:runAction(cc.EaseSineInOut:create(ac))
elseif actionFlag == kEaseExponentialIn then
sprite:runAction(cc.EaseExponentialIn:create(ac))
elseif actionFlag == kEaseExponentialOut then
sprite:runAction(cc.EaseExponentialOut:create(ac))
elseif actionFlag == kEaseExponentialInOut then
sprite:runAction(cc.EaseExponentialInOut:create(ac))
elseif actionFlag == kSpeed then
sprite:runAction(cc.Speed:create(ac, (math.random() * 5)))
end
end
goMenuItem:registerScriptTapHandler(goMenu)
return layer
end
return ActionScene