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"


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值