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"
-- 定义常量
kFlipX3D = 1
kPageTurn3D = 2
kLens3D = 3
kShaky3D = 4
kWaves3D = 5
kJumpTiles3D = 6
kShakyTiles3D = 7
kWavesTiles3D = 8
--操作标识
actionFlag = -1
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 pItmLabelFlipX3D = cc.Label:createWithBMFont("fonts/fnt2.fnt","FlipX3D")
local pItmMenupFlipX3D = cc.MenuItemLabel:create(pItmLabelFlipX3D)
pItmMenupFlipX3D:setTag(kFlipX3D)
pItmMenupFlipX3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelPageTurn3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "PageTurn3D")
local pItmMenuPageTurn3D = cc.MenuItemLabel:create(pItmLabelPageTurn3D)
pItmMenuPageTurn3D:setTag(kPageTurn3D)
pItmMenuPageTurn3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelLens3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Lens3D")
local pItmMenuLens3D = cc.MenuItemLabel:create(pItmLabelLens3D)
pItmMenuLens3D:setTag(kLens3D)
pItmMenuLens3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelShaky3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Shaky3D")
local pItmMenuShaky3D = cc.MenuItemLabel:create(pItmLabelShaky3D)
pItmMenuShaky3D:setTag(kShaky3D)
pItmMenuShaky3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelWaves3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "Waves3D")
local pItmMenuWaves3D = cc.MenuItemLabel:create(pItmLabelWaves3D)
pItmMenuWaves3D:setTag(kWaves3D)
pItmMenuWaves3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelJumpTiles3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "JumpTiles3D")
local pItmMenuJumpTiles3D = cc.MenuItemLabel:create(pItmLabelJumpTiles3D)
pItmMenuJumpTiles3D:setTag(kJumpTiles3D)
pItmMenuJumpTiles3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelShakyTiles3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "ShakyTiles3D")
local pItmMenuShakyTiles3D = cc.MenuItemLabel:create(pItmLabelShakyTiles3D)
pItmMenuShakyTiles3D:setTag(kShakyTiles3D)
pItmMenuShakyTiles3D:registerScriptTapHandler(OnClickMenu)
local pItmLabelWavesTiles3D = cc.Label:createWithBMFont("fonts/fnt2.fnt", "WavesTiles3D")
local pItmMenuWavesTiles3D = cc.MenuItemLabel:create(pItmLabelWavesTiles3D)
pItmMenuWavesTiles3D:setTag(kWavesTiles3D)
pItmMenuWavesTiles3D:registerScriptTapHandler(OnClickMenu)
local menu = cc.Menu:create(
pItmMenupFlipX3D,pItmMenuPageTurn3D,
pItmMenuLens3D, pItmMenuShaky3D,
pItmMenuWaves3D, pItmMenuJumpTiles3D,
pItmMenuShakyTiles3D, pItmMenuWavesTiles3D)
menu:alignItemsVertically()
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()
gridNodeTarget = cc.NodeGrid:create()
layer:addChild(gridNodeTarget)
local bg = cc.Sprite:create("Background.png")
bg:setPosition(cc.p(size.width/2, size.height/2))
gridNodeTarget:addChild(bg)
sprite = cc.Sprite:create("hero.png")
sprite:setPosition(cc.p(size.width / 2, size.height / 2))
gridNodeTarget: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")
if actionFlag == kFlipX3D then
gridNodeTarget:runAction(cc.FlipX3D:create(3.0))
elseif actionFlag == kPageTurn3D then
gridNodeTarget:runAction(cc.PageTurn3D:create(3.0, cc.size(15,10)))
elseif actionFlag == kLens3D then
gridNodeTarget:runAction(cc.Lens3D:create(3.0, cc.size(15,10), cc.p(size.width/2,size.height/2), 240))
elseif actionFlag == kShaky3D then
gridNodeTarget:runAction(cc.Shaky3D:create(3.0, cc.size(15,10), 5, false))
elseif actionFlag == kWaves3D then
gridNodeTarget:runAction(cc.Waves3D:create(3.0, cc.size(15,10), 5, 40))
elseif actionFlag == kJumpTiles3D then
gridNodeTarget:runAction(cc.JumpTiles3D:create(3.0, cc.size(15,10), 2, 30))
elseif actionFlag == kShakyTiles3D then
gridNodeTarget:runAction(cc.ShakyTiles3D:create(3.0, cc.size(15,10), 5, false))
elseif actionFlag == kWavesTiles3D then
gridNodeTarget:runAction(cc.WavesTiles3D:create(3.0, cc.size(15,10), 4, 120))
end
end
goMenuItem:registerScriptTapHandler(goMenu)
return layer
end
return ActionScene