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





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5353690.html,如需转载请自行联系原作者 
相关文章
|
5月前
|
图形学
【实现100个unity特效】shader实现3D物品闪光和描边效果
【实现100个unity特效】shader实现3D物品闪光和描边效果
77 0
|
5月前
|
图形学 Android开发
【实现100个unity特效之6】Unity2d光源的使用
【实现100个unity特效之6】Unity2d光源的使用
39 0
|
5月前
|
图形学 开发者
【实现100个unity特效之1】使用Shader Graph实现动物森友会的世界弯曲效果(带源码)
【实现100个unity特效之1】使用Shader Graph实现动物森友会的世界弯曲效果(带源码)
105 0
|
6月前
|
前端开发 计算机视觉 Python
OpenCV中绘制运动的小球动画,
要在OpenCV中绘制运动的小球动画,并且将动画显示在Python GUI窗口内,可以按照以下步骤进行:
100 2
|
图形学 开发者
Unity3D刚体
Unity3D刚体
163 0
Qt irrlicht(鬼火)3D引擎 摄像机旋转问题
点击打开链接Irrlicht中的摄像有一个函数 setUpVector()
207 0
Cocos2d-x-v3中3D网格特效动画的应用
Cocos2d-x-v3中3D网格特效动画的应用
170 0
|
图形学 索引
Unity3D 物体运动小游戏
目录 一、在Hierarchy窗口中创建场景,之后塑造一个平面作为地板,将元件命名为background。再创建一个正方体,命名为player。
1172 0