动画与动作,在quick中都有对其封装,所以我们还是来看一下吧。
总的来说,对于帧动画,quick封装的方法我们可以经常使用,这是非常方便的,下面直接上代码来直观感受下,
比如,14张帧图片,采用cocos2d-x lua的方法来写是这样的,
local sp = display.newSprite("grossini_dance_01.png", display.cx, display.cy) self:addChild(sp) local animation = CCAnimation:create() local number, name for i = 1, 14 do if i < 10 then number = "0"..i else number = i end name = "grossini_dance_"..number..".png" animation:addSpriteFrameWithFileName(name) end animation:setDelayPerUnit(2.8 / 14.0) local action = CCAnimate:create(animation) sp:runAction(action)
display.addSpriteFramesWithFile("hero.plist", "hero.png") --添加帧缓存 local sp = display.newSprite("#grossini_dance_01.png", display.cx, display.cy) self:addChild(sp) local frames = display.newFrames("grossini_dance_%02d.png", 1, 14) local animation = display.newAnimation(frames, 2.8/14.0) sp:playAnimationOnce(animation)
不信的话,可以看下这个函数的源代码,
function display.newFrames(pattern, begin, length, isReversed) local frames = {} local step = 1 local last = begin + length - 1 if isReversed then last, begin = begin, last step = -1 end for index = begin, last, step do local frameName = string.format(pattern, index) local frame = sharedSpriteFrameCache:spriteFrameByName(frameName) if not frame then printError("display.newFrames() - invalid frame, name %s", tostring(frameName)) return end frames[#frames + 1] = frame end return frames end
对于播放动画,quick给Sprite精灵类提供了两个函数,
function Sprite:playAnimationOnce(animation, removeWhenFinished, onComplete, delay) return transition.playAnimationOnce(self, animation, removeWhenFinished, onComplete, delay) end function Sprite:playAnimationForever(animation, delay) return transition.playAnimationForever(self, animation, delay) end
以上就是动画的用法,接下来我们再看关于动作的使用,
动作封装的类是transition,其中提供了这些函数,
transition.newEasing(action, easingName, more) | |
为图像创造效果 | |
transition.execute(target, action, args) | |
执行一个动作效果 | |
transition.rotateTo(target, args) | |
将显示对象旋转到指定角度,并返回 CCAction 动作对象。 | |
transition.moveTo(target, args) | |
将显示对象移动到指定位置,并返回 CCAction 动作对象。 | |
transition.fadeTo(target, args) | |
将显示对象的透明度改变为指定值,并返回 CCAction 动作对象。 | |
transition.scaleTo(target, args) | |
将显示对象缩放到指定比例,并返回 CCAction 动作对象。 | |
transition.sequence(actions) | |
创建一个动作序列对象。 | |
transition.playAnimationOnce(target, animation, removeWhenFinished, onComplete, delay) | |
在显示对象上播放一次动画,并返回 CCAction 动作对象。 |
transition.execute(target, action, args)
transition.sequence(actions)
这两个,为啥呢,接着看,
transition.execute() 是一个强大的工具,可以为原本单一的动作添加各种附加特性。
transition.execute() 的参数表格支持下列参数:
transition.execute() 支持的缓动效果:
transition.execute(sprite, CCMoveTo:create(1.5, CCPoint(display.cx, display.cy)), { delay = 1.0, easing = "backout", onComplete = function() print("move completed") end, })
local move1 = CCMoveBy:create(1, ccp(250,0)) local move2 = CCMoveBy:create(1, ccp(0,50)) local array = CCArray:createWithCapacity(2) array:addObject(move1) array:addObject(move2) local seq = CCSequence:create(array)
local sequence = transition.sequence({ CCMoveBy:create(1, ccp(250,0)), CCMoveBy:create(1, ccp(0,50)) })
以上就是全部内容了。
原文地址:http://blog.csdn.net/w337198302/article/details/38801147