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"

-- 定义常量
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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值