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


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

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

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

--加载运动过程中的动画   使用文件加载  texturepacker
--这种加载方式网上一大把,不知道原理的自行google
  1. local cache = CCSpriteFrameCache:sharedSpriteFrameCache():addSpriteFramesWithFile(“plist文件”)
  2. local array = CCArray:create()
  3. for i = 1, n do   –这里n是帧的数量
  4. local path = string.format(“%d.png”, i)
  5. local name = CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName(path)
  6. array:addObject(name)
  7. end
  8. local animation = CCAnimation:createWithSpriteFrames(array)
  9. –也可以用table来设计几个动
  10. –[[
  11. local info =
  12. {
  13. { pointx = 1, pointy = 2},
  14. { pointx = 1, pointy = 2}
  15. }
  16. local j = 0
  17. for j = 1, #info do
  18. local info1 = info[j]
  19. info1.pointx
  20. end
  21. ]]
  22. –运动动画
  23. local j = 0
  24. for j = 1, 10 do   –几个在动
  25. –刚刚设置的帧动画
  26. animation:setDelayPerUnit((math.random(5, 10)) / 70)
  27. animation:setRestoreOriginalFrame(true)
  28. local animate = CCAnimate:create(animation)
  29. animate:setTag(0)
  30. –运动动画
  31. local sprite = CCSprite:create(“图片文件, 这里是跟plist文件名一样的名字哟”)
  32. local offset = j * math.random(-1, 1)         –这里-1, 1 就是中间分割  向两侧产生
  33. sprite:setPosition(ccp(x + offset, y))   — 这里的x, y 你自己定义
  34. sprite:setScale(1.2)
  35. layer:addChile(sprite)
  36. local arraymove = CCArray:create()
  37. arraymove:addObject(CCDelayTime:create(j * 0.1))  –根据需要自己设置延时
  38. local moveto = CCMoveTo:create(0.8, ccp(x + offset, y))   –跟上面的对比 x, y自己设置
  39. local arrayFade = CCArray:create()
  40. local delayFade = CCDelayTime:create(0.8)
  41. local fade = CCFadeTo:create(0.05, 0)  –0.05秒内, 变为不透明
  42. arrayFade:addObject(delayFade)
  43. arrayFade:addObject(fade)
  44. local actionFade = CCSequence:create(arrayFade)
  45. local spawn = CCSpawn:createWithTwoActions(moveto, actionFade)  –让精灵的若干个动画同时执行
  46. arraymove:addObject(spawn)
  47. local action = CCSequence:create(arraymove)
  48. sprite:runAction(CCRepeateForever:create(animate))
  49. sprite:runAction(action)
  50. end
  51. –延迟销毁动作
  52. local scene = CCDirector:sharedDirector():getRunningScene()
  53. scene:addChile(layer, 100)
  54. local arrayend = CCArray:create()
  55. arrayend:addObject(CCDelayTime:create(2))   –延迟时间
  56. arrayend:addObject(CCFadeTo:create(0.1, 0))
  57. arrayend:addObject(CCCallFuncN:create(removeLayer))  –这里removeLayer是一个函数
  58. local endAction = CCSequence:create(arrayend)
  59. layer:runAction(endAction)
  60. function removeLayer(n)
  61. n = tolua.cast(n, “CCNode”)
  62. n:removeFromParentAndCleanup(true)
  63. end