cocos2d-x TestLua 之 CCEaseElastic CCEaseBounce CCEaseBack CCSpeed

感谢点评与关注,欢迎转载与分享。

勤奋努力,持之以恒!

local size = CCDirector:sharedDirector():getWinSize()

local scheduler = CCDirector:sharedDirector():getScheduler()


local sp1 = nil
local sp2 = nil
local sp3 = nil

local function createSimpleMoveBy()
    return CCMoveBy:create(3,ccp(size.width-130,0))
    --return CCRotateBy:create(3,360)
    --return CCScaleBy:create(3,2)
    --return CCJumpBy:create(3,ccp(800,0),50,5)
    --return CCBlink:create(3,10)
    --return CCFadeIn:create(3)
end

local function createSimpleDelayTime()
    return CCDelayTime:create(0.25)
end

local function getBaseLayer()
    local layer = CCLayer:create()
    
    sp1 = CCSprite:create("man.png")
    sp2 = CCSprite:create("blackgirl.png")
    sp3 = CCSprite:create("whitegirl.png")
    
    layer:addChild(sp1,3)
    layer:addChild(sp2,2)
    layer:addChild(sp3,1)
    
    sp1:setPosition(ccp(60,size.height*1/5))
    sp2:setPosition(ccp(60,size.height*2.5/5))
    sp3:setPosition(ccp(60,size.height*4/5))

    return layer
end


local function SpriteEaseElastic()
    local layer = getBaseLayer()
    
    local move = createSimpleMoveBy()
    local move_back = move:reverse()
    
    local arr1 = CCArray:create()
    arr1:addObject(move)
    arr1:addObject(createSimpleDelayTime())
    arr1:addObject(move_back)
    arr1:addObject(createSimpleDelayTime())
    sp1:runAction(CCRepeatForever:create(CCSequence:create(arr1)))
    
    
    local move_ease_elastic_in = CCEaseElasticIn:create(createSimpleMoveBy())  --让目标动作赋予弹性 ,且以目标动作起点位置赋予弹性
    local move_ease_elastic_in_back = move_ease_elastic_in:reverse()

    local arr2 = CCArray:create()
    arr2:addObject(move_ease_elastic_in)
    arr2:addObject(createSimpleDelayTime())
    arr2:addObject(move_ease_elastic_in_back)
    arr2:addObject(createSimpleDelayTime())
    sp2:runAction(CCRepeatForever:create(CCSequence:create(arr2)))

    
    local move_ease_elastic_out = CCEaseElasticOut:create(createSimpleMoveBy())  --让目标动作赋予弹性 ,且以目标动作终点位置赋予弹性
    local move_ease_elastic_out_back = move_ease_elastic_out:reverse()
    
    local arr3 = CCArray:create()
    arr3:addObject(move_ease_elastic_out)
    arr3:addObject(createSimpleDelayTime())
    arr3:addObject(move_ease_elastic_out_back)
    arr3:addObject(createSimpleDelayTime())
    sp3:runAction(CCRepeatForever:create(CCSequence:create(arr3)))
    
    return layer
end


local function SpriteEaseElasticInOut()
    local layer = getBaseLayer()
    
    local move_elastic_inout1 = CCEaseElasticInOut:create(createSimpleMoveBy(),0.3) --让目标动作赋予弹性 ,且以目标动作起点和终点位置赋予弹性
    local move_elastic_inout1_back = move_elastic_inout1:reverse()
    
    local arr1 = CCArray:create()
    arr1:addObject(move_elastic_inout1)
    arr1:addObject(createSimpleDelayTime())
    arr1:addObject(move_elastic_inout1_back)
    arr1:addObject(createSimpleDelayTime())
    sp1:runAction(CCRepeatForever:create(CCSequence:create(arr1)))
    
    local move_elastic_inout2 = CCEaseElasticInOut:create(createSimpleMoveBy(),0.45)
    local move_elastic_inout2_back = move_elastic_inout2:reverse()
    
    local arr2 = CCArray:create()
    arr2:addObject(move_elastic_inout2)
    arr2:addObject(createSimpleDelayTime())
    arr2:addObject(move_elastic_inout2_back)
    arr2:addObject(createSimpleDelayTime())
    sp2:runAction(CCRepeatForever:create(CCSequence:create(arr2)))
    
    
    local move_elastic_inout3 = CCEaseElasticInOut:create(createSimpleMoveBy(),0.6)
    local move_elastic_inout3_back = move_elastic_inout3:reverse()
    
    local arr3 = CCArray:create()
    arr3:addObject(move_elastic_inout3)
    arr3:addObject(createSimpleDelayTime())
    arr3:addObject(move_elastic_inout3_back)
    arr3:addObject(createSimpleDelayTime())
    sp3:runAction(CCRepeatForever:create(CCSequence:create(arr3)))

    return layer
end


local scene = CCScene:create()
scene:addChild(SpriteEaseElasticInOut())
CCDirector:sharedDirector():runWithScene(scene)

local function SpriteEaseBounce()
    local layer = getBaseLayer()
    
    local move = createSimpleMoveBy()
    local move_back = move:reverse()
    
    local arr1 = CCArray:create()
    arr1:addObject(move)
    arr1:addObject(createSimpleDelayTime())
    arr1:addObject(move_back)
    arr1:addObject(createSimpleDelayTime())
    sp1:runAction(CCRepeatForever:create(CCSequence:create(arr1)))

    local move_ease_bounceIn = CCEaseBounceIn:create(createSimpleMoveBy()) --让目标动作赋予反弹力,且以目标动作起始位置开始反弹
    local move_ease_bounceIn_back = move_ease_bounceIn:reverse()
    
    local arr2 = CCArray:create()
    arr2:addObject(move_ease_bounceIn)
    arr2:addObject(createSimpleDelayTime())
    arr2:addObject(move_ease_bounceIn_back)
    arr2:addObject(createSimpleDelayTime())
    sp2:runAction(CCRepeatForever:create(CCSequence:create(arr2)))
    
    local move_ease_bounceOut = CCEaseBounceOut:create(createSimpleMoveBy()) --让目标动作赋予反弹力,且以目标动作结束位置开始反弹
    local move_ease_bounceOut_back = move_ease_bounceOut:reverse() 
    
    local arr3 = CCArray:create()
    arr3:addObject(move_ease_bounceOut)
    arr3:addObject(createSimpleDelayTime())
    arr3:addObject(move_ease_bounceOut_back)
    arr3:addObject(createSimpleDelayTime())
    sp3:runAction(CCRepeatForever:create(CCSequence:create(arr3)))
    
    return layer
end


local function SpriteEaseBounceInOut()
    local layer = getBaseLayer()
    
    local move = createSimpleMoveBy()
    local move_back = move:reverse()
    
    local arr1 = CCArray:create()
    arr1:addObject(move)
    arr1:addObject(createSimpleDelayTime())
    arr1:addObject(move_back)
    arr1:addObject(createSimpleDelayTime())
    sp1:runAction(CCRepeatForever:create(CCSequence:create(arr1)))
    
    
    local move_ease_bounceInOut = CCEaseBounceInOut:create(createSimpleMoveBy()) --让目标动作赋予反弹力,且以目标动作起始与结束位子开始反弹
    local move_ease_bounceInOut_back = move_ease_bounceInOut:reverse()
    
    local arr2 = CCArray:create()
    arr2:addObject(move_ease_bounceInOut)
    arr2:addObject(createSimpleDelayTime())
    arr2:addObject(move_ease_bounceInOut_back)
    arr2:addObject(createSimpleDelayTime())
    sp2:runAction(CCRepeatForever:create(CCSequence:create(arr2)))
    
    return layer
end

local function SpriteEaseBack()
    local layer = getBaseLayer()
    
    local move = createSimpleMoveBy()
    local move_back = move:reverse()
    
    local arr1 = CCArray:create()
    arr1:addObject(move)
    arr1:addObject(createSimpleDelayTime())
    arr1:addObject(move_back)
    arr1:addObject(createSimpleDelayTime())
    sp1:runAction(CCRepeatForever:create(CCSequence:create(arr1)))
    
    local move_ease_backIn = CCEaseBackIn:create(createSimpleMoveBy())  --让目标动作赋予回力,且以目标动作起点位置作为回力点
    local move_ease_backIn_back = move_ease_backIn:reverse()
    
    local arr2 = CCArray:create()
    arr2:addObject(move_ease_backIn)
    arr2:addObject(createSimpleDelayTime())
    arr2:addObject(move_ease_backIn_back)
    arr2:addObject(createSimpleDelayTime())
    sp2:runAction(CCRepeatForever:create(CCSequence:create(arr2)))

    local move_ease_backOut = CCEaseBackOut:create(createSimpleMoveBy()) --让目标动作赋予回力,且以目标动作终点位置作为回力点
    local move_ease_backOut_back = move_ease_backOut:reverse()
    
    local arr3 = CCArray:create()
    arr3:addObject(move_ease_backOut)
    arr3:addObject(createSimpleDelayTime())
    arr3:addObject(move_ease_backOut_back)
    arr3:addObject(createSimpleDelayTime())
    sp3:runAction(CCRepeatForever:create(CCSequence:create(arr3)))

    return layer
end


local function SpriteEaseBackInOut()
    local layer = getBaseLayer()
    
    local move = createSimpleMoveBy()
    local move_back = move:reverse()
    
    local arr1 = CCArray:create()
    arr1:addObject(move)
    arr1:addObject(createSimpleDelayTime())
    arr1:addObject(move_back)
    arr1:addObject(createSimpleDelayTime())
    sp1:runAction(CCRepeatForever:create(CCSequence:create(arr1)))
    
    
    local move_ease_back_inout = CCEaseBackInOut:create(createSimpleMoveBy()) --让目标动作赋予回力,且以目标动作起点和终点位置作为回力点
    local move_ease_back_inout_back = move_ease_back_inout:reverse()
    
    local arr2 = CCArray:create()
    arr2:addObject(move_ease_back_inout)
    arr2:addObject(createSimpleDelayTime())
    arr2:addObject(move_ease_back_inout_back)
    arr2:addObject(createSimpleDelayTime())
    sp2:runAction(CCRepeatForever:create(CCSequence:create(arr2)))

    return layer
end
local scheduler = CCDirector:sharedDirector():getScheduler()

local speed_act1 = nil
local speed_act2 = nil
local speed_act3 = nil

local function altertime()
    speed_act1:setSpeed(math.random()*2)
    speed_act2:setSpeed(math.random()*2)
    speed_act3:setSpeed(math.random()*2)
end

local function SpeedTest_onEnterOrExit(tag)
    if tag == "enter" then
        SpeedTest_entry = scheduler:scheduleScriptFunc(altertime, 1.0, false)
    elseif tag == "exit" then
        scheduler:unscheduleScriptEntry(SpeedTest_entry)
    end
end

local function SpriteSpeed()
    local layer = getBaseLayer()
    
    local jump1 = CCJumpBy:create(4,ccp(size.width-80,0),100,4)
    local jump2 = jump1:reverse()
    local rot1 = CCRotateBy:create(4,360*4)
    local rot2 = rot1:reverse()
    
    local seq1 = CCSequence:createWithTwoActions(jump1,jump2)
    local seq2 = CCSequence:createWithTwoActions(rot1,rot2)
    
    local spawn1 = CCSpawn:createWithTwoActions(seq1,seq2)
    local spawn2 = tolua.cast(spawn1:copy():autorelease(),"CCSpawn")
    local spawn3 = tolua.cast(spawn1:copy():autorelease(),"CCSpawn")

    speed_act1 = CCSpeed:create(CCRepeatForever:create(spawn1),1)  --设置目标动作运行速率
    speed_act2 = CCSpeed:create(CCRepeatForever:create(spawn2),1)
    speed_act3 = CCSpeed:create(CCRepeatForever:create(spawn3),1)
    
    sp1:runAction(speed_act1)
    sp2:runAction(speed_act2)
    sp3:runAction(speed_act3)
    
    layer:registerScriptHandler(SpeedTest_onEnterOrExit)
    return layer
end




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值