一些暂存的动画

27 篇文章 0 订阅
local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)
--测试图片随另一个图片动画
function MainScene:Test01()
    --设置背景色为天蓝色
    display.newColorLayer(cc.c4b(127,255,0,255)):addTo(self)  
    --创建一个layout,然后和其相关的其他精灵,随着他的出现而消失,随着他的消失而出现
    --循环创建一组精灵
    local spTb={}
    local pt=cc.p(display.cx-300,50)
    for i=1,5 do
        -- 左对齐,并且多行文字顶部对齐
        local label = display.newTTFLabel({
            text = tostring(i),
            font = "Arial",
            size = 30,
            color = cc.c3b(255, 0, 0), -- 使用纯红色
            align = cc.TEXT_ALIGNMENT_CENTER,
            valign = cc.VERTICAL_TEXT_ALIGNMENT_CENTER,
            dimensions = cc.size(100, 50)
        })
        pt.x=pt.x+100
        local tmpSp=display.newSprite("img1.png"):addTo(self,10,i):pos(pt.x,pt.y):add(label,10)
        table.insert(spTb,tmpSp)
    end

    --创建一个button 
    local btn=cc.ui.UIPushButton.new("img3.png")
    :align(display.right, display.right - 100, display.bottom + 50)
    :addTo(self)
    local spCount=#spTb
    btn:onButtonClicked(function()
        print("i was touched")
        if btn:getPositionX()<display.right - 100 then--该回来了
            -- btn:moveBy(1.5, 200, 0)
            btn:setTouchEnabled(false)
            transition.execute(btn, cc.MoveBy:create(1.5,cc.p(200,0)), {
                easing = "exponentialOut",
                onComplete = function()
                    btn:setTouchEnabled(true)
                end,
            })
            print("-----")
            --同时,让序列精灵退出
            for k,v in pairs(spTb) do
                transition.execute(v, cc.MoveBy:create(0.5,cc.p(0,100)), {
                    delay = k*0.2,
                    easing = "exponentialOut",
                })
            end
        else--该出去了
            -- btn:moveBy(1.5, -200, 0) 
            btn:setTouchEnabled(false)
            transition.execute(btn, cc.MoveBy:create(1.5,cc.p(-200,0)), {
                easing = "exponentialOut",
                onComplete = function()
                    btn:setTouchEnabled(true)
                end,
            })

            for k,v in pairs(spTb) do
                transition.execute(v, cc.MoveBy:create(0.5,cc.p(0,-100)), {
                    delay = (spCount-k)*0.2,
                    easing = "exponentialOut",
                })
            end
        end
    end)
end
--传入btn,传入控制对象,传入要弹出的方向,left,right,down,up
function MainScene:func1(btn,node,direction )
    if not btn or not node then
        return false
    end 

    if direction==nil then
        direction="right"
    end
    btn.scaleStatus=false

    btn:onButtonClicked(function()
        --然后执行缩放动画
        transition.execute(node,transition.scaleTo(node, btn.scaleStatus and {scale=0.1,time=0.2} or {scale=1,time=0.2}),
            {
                onComplete = function()
                    if btn.scaleStatus then
                        btn.scaleStatus=false
                    else
                        btn.scaleStatus=true
                    end
                    print("move completed")
                end,
            }
        )
    end)

end


--点击一个按钮,弹出一个层
function MainScene:Test02()
    --创建一个按钮
    local btn=cc.ui.UIPushButton.new("img1.png")
    :align(display.CENTER, display.CENTER, display.CENTER)
    :addTo(self)
    :pos(display.right-100,display.cy)
    --创建一个层,

    -- local node=display.newNode():addTo(self)
    -- :pos(display.cx,display.cy)
    -- node:setAnchorPoint(cc.p(0,0.5))


    local ly=require("src.app.scenes.myTest").new()
    :scale(0.1)
    :addTo(self)
    :pos(display.left,display.cy)
    ly:setAnchorPoint(cc.p(0,1))
    ly:setTouchEnabled(false)
    ly:setContentSize(cc.size(300,300))

    self:func1(btn, ly)
end

function MainScene:CellMove(infoTb,distance,time,isIn)
    if not infoTb then
        return
    end
    local moveTb=cc.p(0,0)
    if isIn and infoTb.direction=="left" then
        moveTb=cc.p(distance,0)
    elseif isIn and infoTb.direction=="right" then
        moveTb=cc.p(-distance,0)
    elseif isIn and infoTb.direction=="down" then
        moveTb=cc.p(0,distance)
    elseif isIn and infoTb.direction=="up" then
        moveTb=cc.p(0,-distance)
    elseif not isIn and infoTb.direction=="left" then
        moveTb=cc.p(-distance,0)
    elseif not isIn and infoTb.direction=="right" then
        moveTb=cc.p(distance,0)
    elseif not isIn and infoTb.direction=="down" then
        moveTb=cc.p(0,-distance)
    elseif not isIn and infoTb.direction=="up" then
        moveTb=cc.p(0,distance) 
    end

    for k,v in pairs(infoTb.nodes) do
        v:moveBy(0.2, moveTb.x, moveTb.y)
    end
end

--传入上下左右的表,传入移动距离,传入时间,传入进入还是退出
function MainScene:func2(infoTb,distance,time,isIn)
    for k,v in pairs(infoTb) do
        self:CellMove(v,distance,time,isIn)
    end
end

--上下左右进入退出
function MainScene:Test03()
    local topTb={}
    for i=0,5 do
        local sp=display.newSprite("img1.png", display.cx-200+i*100, display.top-50):addTo(self)
        table.insert(topTb,sp)
    end

    local bottomTb={}
    for i=0,5 do
        local sp=display.newSprite("img1.png", display.cx-200+i*100, display.bottom+50):addTo(self)
        table.insert(bottomTb,sp)
    end

    local leftTb={}
    for i=0,5 do
        local sp=display.newSprite("img1.png", display.left+50, display.cy-200+i*100):addTo(self)
        table.insert(leftTb,sp)
    end
   
    local rightTb={}
    for i=0,5 do
        local sp=display.newSprite("img1.png", display.right-50, display.cy-200+i*100):addTo(self)
        table.insert(rightTb,sp)
    end

    local infoTb={
        {direction="left",nodes=leftTb},
        {direction="right",nodes=rightTb},
        {direction="up",nodes=topTb},
        {direction="down",nodes=bottomTb}
    }


    local btn=cc.ui.UIPushButton.new("img3.png")
    :align(display.right, display.CENTER, display.CENTER)
    :addTo(self)
    :pos(display.cx, display.cy)
    btn.isMoveOut=false
    btn:onButtonClicked(
            function()
                self:func2(infoTb, 200, 0.2, btn.isMoveOut)
                btn.isMoveOut=not btn.isMoveOut
            end
        )
end

--序列进入,序列消失
function MainScene:inOrOut(infoTb,isIn)
    if not infoTb then
        return
    end

    if isIn then
        for k,v in pairs(infoTb) do
            transition.execute(v,cc.FadeIn:create(0.2),{delay=k*0.2})
        end
    else
        local count=#infoTb
        for k,v in pairs(infoTb) do
            transition.execute(v,cc.FadeOut:create(0.2),{delay=(count-k)*0.2})
        end
    end
end
--序列进入,序列消失
function MainScene:Test04()
    --创建序列精灵
    local infoTb={}
    for i=1,6 do
        local sp=display.newSprite("img1.png",display.cx,display.top-i*100):addTo(self)
        table.insert(infoTb,sp)
    end

    local btn=cc.ui.UIPushButton.new("img3.png")
    :align(display.right, display.CENTER, display.CENTER)
    :addTo(self)
    :pos(display.cx-200, display.cy)
    btn.isShow=true
    btn:onButtonClicked(
            function()
                self:inOrOut(infoTb,not btn.isShow)
                btn.isShow=not btn.isShow
            end
    )
end

--随机拍照实现 
function MainScene:randomTakePhoto(ptTb,sp)
    local seqAction=cc.Sequence:create(
            cc.CallFunc:create(function()
                sp:setPosition(ptTb[math.random(1,#ptTb)])
                sp:setScale(0.01)
                sp:setVisible(true)
            end),
            cc.CallFunc:create(function()
                -- sp:runAction(rotateAction)
                sp:scaleTo(0.5,1)
                sp:rotateBy(0.5, 360)
                -- sp:runAction(scaleToAction)
            end),
            cc.DelayTime:create(0.3),
            cc.CallFunc:create(function()
                -- sp:runAction(revAction)
                sp:scaleTo(0.5,0.01)
                sp:rotateBy(0.5,360)
                -- sp:runAction(cc.ScaleTo:create(0.5,0.01))
            end),
            cc.DelayTime:create(0.3),
            cc.CallFunc:create(function()
                sp:setVisible(false)
            end)
        )
    sp:runAction(seqAction)
end

--随机拍照
function MainScene:Test05()
    math.randomseed(os.time())
    local ptTb={}
    for i=1,100 do
        local pt=cc.p(display.width*math.random(),display.height*math.random())
        table.insert(ptTb,pt)
    end

    local sp=display.newSprite("img1.png"):addTo(self):pos(300, 300)

    local scheduler = require(cc.PACKAGE_NAME .. ".scheduler")

    
    scheduler.scheduleGlobal(function(dt)
        self:randomTakePhoto(ptTb,sp)
    end,2)
end

--提示

--圆环滚动
function MainScene:Test06()

    local function scrollViewListener(event)
        print("the event name is -----  "..event.name)
    end

    local ly=display.newColorLayer(cc.c4b(255,255,0,255)):addTo(self)


    --创建一个滚动层
    local scrollView=cc.ui.UIScrollView.new({viewRect =cc.rect(0,0,5000,100)})
    :setDirection(cc.ui.UIScrollView.DIRECTION_HORIZONTAL)
    :onScroll(handler(self,scrollViewListener))
    :addTo(ly)
    :pos(display.left, display.cy)
    scrollView:setTouchEnabled(true)

    local mainNode=display.newNode()
    scrollView:addScrollNode(mainNode)

    for i=1,4 do
        local sp=display.newSprite("img1.png",i*100,50)
        mainNode:addChild(sp, 100)
    end
end

function MainScene:scrollListener(event)
    print("TestUIScrollViewScene - scrollListener:" .. event.name)
end

--列表的飞入飞出
function MainScene:func07(infoTb,distance,isGetOut)
    local addPt=cc.p(distance,50)
    local count=#infoTb
    for key, var in ipairs(infoTb) do
        local ptNormal=cc.p(0,0)
        ptNormal.x,ptNormal.y=var:getPosition()
        local ptNow=cc.p(ptNormal.x+addPt.x,ptNormal.y+addPt.y)
        
        var:setVisible(true)
        if isGetOut then
            transition.execute(var,cc.MoveTo:create(0.5,ptNow),{delay=(count-key)*0.3,onComplete=function() print(" over-----") end}) 
        else
            var:setPosition(ptNow)
            transition.execute(var,cc.MoveTo:create(0.5,ptNormal),{delay=(key-1)*0.3,onComplete=function() print(" over-----") end}) 
        end
         
    end
end

--列表飞入,飞出
function MainScene:Test07(  )
    local team1={}

    for i=1,10 do
        local sp=display.newSprite("img1.png",200,800-i*100):addTo(self)
        sp:setVisible(false)
        table.insert(team1,sp)  
    end
    
    local team2={}

    for i=1,10 do
        local sp=display.newSprite("img3.png",500,800-i*100):addTo(self)
        sp:setVisible(false)
        table.insert(team2,sp)  
    end
    
   local btn=cc.ui.UIPushButton.new("img3.png")
        :align(display.CENTER, display.right - 100, display.bottom + 120)
        :addTo(self)
        :pos(display.cx,display.cy)
    btn.isClicked=true
    btn:onButtonClicked(
        function()
            if btn.isClicked then
                self:func07(team1, -300)
                self:func07(team2, 300)
            else
                self:func07(team1, -300,true)
                self:func07(team2, 300,true)
            end
            btn.isClicked=not btn.isClicked
        end
    )

end

function MainScene:ctor()
    cc.ui.UILabel.new({
            UILabelType = 2, text = "Hello, World", size = 64})
        :align(display.CENTER, display.cx, display.cy)
        :addTo(self)  
   -- self:Test01()
    -- self:Test02()  
    -- self:Test03() 
    -- self:Test04()
    -- self:Test05()
    -- self:Test06()
    self:Test07()
    -- self:Test08()
end

function MainScene:onEnter()
end

function MainScene:onExit()
end

return MainScene

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值