Lua_特效动作

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值