采用cocos2d-x lua 制作數字滾動效果樣例


require "Cocos2d"
require "Cocos2dConstants"
local testscene = class("testscene",function()
        return cc.Scene:create()
end)
function testscene:create()
local  scene = testscene.new()
    return scene
end
--默認函數
function testscene:ctor()
--創建層-將層加入場景中
    local layer = cc.Layer:create()
    self:addChild(layer)
--創建節點-將節點加入層中
    local node = cc.Sprite:create("res/land.png")
    node:setPosition(240,160)
    node:setAnchorPoint(0.5,0.5)
    layer:addChild(node,2)

    local size = node:getContentSize()
        _beginNum = 200
--創建文本-將文本加入節點中
    txt =  cc.LabelTTF:create(tostring(_beginNum),"Marker Felt",24)
        txt:setColor(cc.c4b(20,25,255,255))
        txt:setPosition(size.width/2,size.height/2)
        txt:setAnchorPoint(0.5,0.5)
        node:addChild(txt)
    local taction = {}
--延遲
    local delay =cc.DelayTime:create(0.01)
        table.insert(taction,delay)
--擴大
        local scale = cc.ScaleTo:create(0.2,2)
        local scale2 = cc.ScaleTo:create(0.2,1)
           table.insert(taction,scale)
           table.insert(taction,scale2)
-- 數值改變
        _endNum =10000
        math.randomseed(3000)
        _dis = math.random(5000,10000)
        print(_dis)
    local rtime = (_endNum-_beginNum)/_dis
        print(rtime)
    function chagenum()
        if (_beginNum <  _endNum) then
           _beginNum= _beginNum +_dis
            txt:setString(_beginNum)
        elseif (_beginNum ==  _endNum) then
            txt:setString(  _endNum)
        end
    end
    local seq = cc.Sequence:create(delay,cc.CallFunc:create(chagenum))
--數字翻滾
    local X = size.width/2
    local Y = size.height/2
    local UPY = 2*Y
    local DownY = 0
    local move1 = cc.MoveTo:create(0.05,cc.p(X,UPY))
    local move2 = cc.MoveTo:create(0.05,cc.p(X,DownY))
    local move3 = cc.MoveTo:create(0.05,cc.p(X,Y))

    local scale1 = cc.ScaleTo:create(0.05,1,0.001)
    local scale2 = cc.ScaleTo:create(0.05,1,1)

    local UP =   cc.Sequence:create(move1,scale1)
    local Down =   cc.Sequence:create(move2,scale1,scale2,move3)
    local spawn = cc.Spawn:create(UP,seq,Down)
    local rep = cc.Repeat:create(spawn,rtime)
--設置真值
    local function setnum()
        _beginNum =  _endNum
        txt:setString(_beginNum)
    end

    local call = cc.CallFunc:create(setnum)
    local seq2 = cc.Sequence:create(rep,delay,call)
        table.insert(taction,seq2)
        table.insert(taction,scale)
        table.insert(taction,scale2)
    local seqaction = cc.Sequence:create(taction)
    txt:runAction(seqaction)

    return layer
end

return testscene

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM