zoukankan      html  css  js  c++  java
  • cocos2dx 运动+旋转动画 CCSequence CCAnimation CCAnimate CCMoveTo CCCallFuncN

    cocos2dx 动画是个非常奇妙的东西~~。 这里看到的是一个物体,在运动的过程中会不断地翻转的过程。

       两个动画一起来~~



    以下的代码中涉及到:CCAnimation(补间动画 )  CCAnimate(动画)  CCDelayTime(延迟动作)  CCFadeTo(设置透明态度) CCSequence(动作序列)  CCSpawn(让精灵的若干个动画同一时候运行)  CCRepeateForever(无限循环)  CCCallFuncN(瞬时动作中  node回调函数)  CCMoveTo (移动动作)


    这里是用lua来写的,不是用c++写的。  lua来写这个真的是非常好。非常方便。
    不多说,直接看代码。当中这些类的使用方法网上一搜一大把。


    local winSize = CCDirector:shareDirector():getWinSize()

    local layer = CCLayerColor:create(ccc4(0, 0, 0, 111), winSize.winSize, winSize.height)

    --载入运动过程中的动画   使用文件载入  texturepacker

    --这样的载入方式网上一大把,不知道原理的自行google
    local cache = CCSpriteFrameCache:sharedSpriteFrameCache():addSpriteFramesWithFile("plist文件")
    local array = CCArray:create()

    for i = 1, n do   --这里n是帧的数量
    local path = string.format("%d.png", i)
    local name = CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName(path)
    array:addObject(name)
    end

    local animation = CCAnimation:createWithSpriteFrames(array)

    --也能够用table来设计几个动
    --[[
    local info =
    {
    { pointx = 1, pointy = 2},
    { pointx = 1, pointy = 2}
    }

    local j = 0
    for j = 1, #info do
    local info1 = info[j]
    info1.pointx
    end
    ]]

    --运动动画
    local j = 0
    for j = 1, 10 do   --几个在动
    --刚刚设置的帧动画
    animation:setDelayPerUnit((math.random(5, 10)) / 70)
    animation:setRestoreOriginalFrame(true)
    local animate = CCAnimate:create(animation)
    animate:setTag(0)

    --运动动画
    local sprite = CCSprite:create("图片文件, 这里是跟plist文件名称一样的名字哟")
    local offset = j * math.random(-1, 1)         --这里-1。 1 就是中间切割  向两側产生
    sprite:setPosition(ccp(x + offset, y))   -- 这里的x, y 你自定义
    sprite:setScale(1.2)
    layer:addChile(sprite)

    local arraymove = CCArray:create()
    arraymove:addObject(CCDelayTime:create(j * 0.1))  --依据须要自己设置延时
    local moveto = CCMoveTo:create(0.8, ccp(x + offset, y))   --跟上面的对照 x, y自己设置

    local arrayFade = CCArray:create()
    local delayFade = CCDelayTime:create(0.8)
    local fade = CCFadeTo:create(0.05, 0)  --0.05秒内。 变为不透明
    arrayFade:addObject(delayFade)
    arrayFade:addObject(fade)
    local actionFade = CCSequence:create(arrayFade)
    local spawn = CCSpawn:createWithTwoActions(moveto, actionFade)  --让精灵的若干个动画同一时候运行

    arraymove:addObject(spawn)

    local action = CCSequence:create(arraymove)
    sprite:runAction(CCRepeateForever:create(animate))
    sprite:runAction(action)
    end

    --延迟销毁动作
    local scene = CCDirector:sharedDirector():getRunningScene()
    scene:addChile(layer, 100)

    local arrayend = CCArray:create()
    arrayend:addObject(CCDelayTime:create(2))   --延迟时间
    arrayend:addObject(CCFadeTo:create(0.1, 0))
    arrayend:addObject(CCCallFuncN:create(removeLayer))  --这里removeLayer是一个函数
    local endAction = CCSequence:create(arrayend)
    layer:runAction(endAction)

    function removeLayer(n)
    n = tolua.cast(n, "CCNode")
    n:removeFromParentAndCleanup(true)
    end


  • 相关阅读:
    .netcore下Dapper helper类
    C#各版本新增加功能(系列文章)
    MySQL 查询连续登陆7天以上的用户
    MySQL 8.0版本 自动排序函数dense_rank() over()、rank() over()、row_num() over()用法和区别
    MYSQL 查看锁的方式
    MYSQL 回表查询原理,利用联合索引实现索引覆盖
    ES查询某个字段分词结果
    maven 安装和配置
    Java 注解
    Java 异常
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5353690.html
Copyright © 2011-2022 走看看