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"
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 actionScene = scene.create()
local tranScene = cc.TransitionJumpZoom:create(1, actionScene)
cc.Director:getInstance():pushScene(tranScene)
end
local pItmLabel1 = cc.Label:createWithBMFont("fonts/fnt2.fnt","MoveTo")
local pItmMenu1 = cc.MenuItemLabel:create(pItmLabel1)
pItmMenu1:setTag(kMoveTo)
pItmMenu1:registerScriptTapHandler(OnClickMenu)
local pItmLabel2 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "MoveBy")
local pItmMenu2 = cc.MenuItemLabel:create(pItmLabel2)
pItmMenu2:setTag(kMoveBy)
pItmMenu2:registerScriptTapHandler(OnClickMenu)
local pItmLabel3 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "JumpTo")
local pItmMenu3 = cc.MenuItemLabel:create(pItmLabel3)
pItmMenu3:setTag(kJumpTo)
pItmMenu3:registerScriptTapHandler(OnClickMenu)
local pItmLabel4 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "JumpBy")
local pItmMenu4 = cc.MenuItemLabel:create(pItmLabel4)
pItmMenu4:setTag(kJumpBy)
pItmMenu4:registerScriptTapHandler(OnClickMenu)
local pItmLabel5 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "BezierBy")
local pItmMenu5 = cc.MenuItemLabel:create(pItmLabel5)
pItmMenu5:setTag(kBezierBy)
pItmMenu5:registerScriptTapHandler(OnClickMenu)
local pItmLabel6 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "ScaleTo")
local pItmMenu6 = cc.MenuItemLabel:create(pItmLabel6)
pItmMenu6:setTag(kScaleTo)
pItmMenu6:registerScriptTapHandler(OnClickMenu)
local pItmLabel7 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "ScaleBy")
local pItmMenu7 = cc.MenuItemLabel:create(pItmLabel7)
pItmMenu7:setTag(kScaleBy)
pItmMenu7:registerScriptTapHandler(OnClickMenu)
local pItmLabel8 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "RotateTo")
local pItmMenu8 = cc.MenuItemLabel:create(pItmLabel8)
pItmMenu8:setTag(kRotateTo)
pItmMenu8:registerScriptTapHandler(OnClickMenu)
local pItmLabel9 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "RotateBy")
local pItmMenu9 = cc.MenuItemLabel:create(pItmLabel9)
pItmMenu9:setTag(kRotateBy)
pItmMenu9:registerScriptTapHandler(OnClickMenu)
local pItmLabel10 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Blink")
local pItmMenu10 = cc.MenuItemLabel:create(pItmLabel10)
pItmMenu10:setTag(kBlink)
pItmMenu10:registerScriptTapHandler(OnClickMenu)
local pItmLabel11 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "TintTo")
local pItmMenu11 = cc.MenuItemLabel:create(pItmLabel11)
pItmMenu11:setTag(kTintTo)
pItmMenu11:registerScriptTapHandler(OnClickMenu)
local pItmLabel12 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "TintBy")
local pItmMenu12 = cc.MenuItemLabel:create(pItmLabel12)
pItmMenu12:setTag(kTintBy)
pItmMenu12:registerScriptTapHandler(OnClickMenu)
local pItmLabel13 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "FadeTo")
local pItmMenu13 = cc.MenuItemLabel:create(pItmLabel13)
pItmMenu13:setTag(kFadeTo)
pItmMenu13:registerScriptTapHandler(OnClickMenu)
local pItmLabel14 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "FadeIn")
local pItmMenu14 = cc.MenuItemLabel:create(pItmLabel14)
pItmMenu14:setTag(kFadeIn)
pItmMenu14:registerScriptTapHandler(OnClickMenu)
local pItmLabel15 = cc.Label:createWithBMFont("fonts/fnt2.fnt", "FadeOut")
local pItmMenu15 = cc.MenuItemLabel:create(pItmLabel15)
pItmMenu15:setTag(kFadeOut)
pItmMenu15:registerScriptTapHandler(OnClickMenu)
local menu = cc.Menu:create(
pItmMenu1, pItmMenu2, pItmMenu3,
pItmMenu4, pItmMenu5, pItmMenu6,
pItmMenu7, pItmMenu8, pItmMenu9,
pItmMenu10, pItmMenu11, pItmMenu12,
pItmMenu13, pItmMenu14, pItmMenu15
)
menu:alignItemsInColumns(3, 3, 3, 3, 3)
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)
local 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)
local p = cc.p(math.random() * size.width, math.random() * size.height)
if actionFlag == kMoveTo then
sprite:runAction(cc.MoveTo:create(2,cc.p(size.width - 50, size.height - 50)))
elseif actionFlag == kMoveBy then
sprite:runAction(cc.MoveBy:create(2,cc.p(-50, -50)))
elseif actionFlag == kJumpTo then
sprite:runAction(cc.JumpTo:create(2,cc.p(150, 50),30,5))
elseif actionFlag == kJumpBy then
sprite:runAction(cc.JumpBy:create(2,cc.p(100, 100),30,5))
elseif actionFlag == kBezierBy then
local bezier =
{
cc.p(0, size.height / 2),
cc.p(300, - size.height / 2),
cc.p(100, 100)
}
sprite:runAction(cc.BezierBy:create(3,bezier))
elseif actionFlag == kScaleTo then
sprite:runAction(cc.ScaleTo:create(2, 4))
elseif actionFlag == kScaleBy then
sprite:runAction(cc.ScaleBy:create(2, 0.5))
elseif actionFlag == kRotateTo then
sprite:runAction(cc.RotateTo:create(2,180))
elseif actionFlag == kRotateBy then
sprite:runAction(cc.RotateBy:create(2,-180))
elseif actionFlag == kBlink then
sprite:runAction(cc.Blink:create(3, 5))
elseif actionFlag == kTintTo then
sprite:runAction(cc.TintTo:create(2, 255, 0, 0))
elseif actionFlag == kTintBy then
sprite:runAction(cc.TintBy:create(0.5,0, 255, 255))
elseif actionFlag == kFadeTo then
sprite:runAction(cc.FadeTo:create(1, 80))
elseif actionFlag == kFadeIn then
sprite:setOpacity(10)
sprite:runAction(cc.FadeIn:create(5))
elseif actionFlag == kFadeOut then
sprite:runAction(cc.FadeOut:create(5))
end
end
goMenuItem:registerScriptTapHandler(goMenu)
return layer
end
return ActionScene