怎么删除动作 cocos2dx
发布网友
发布时间:2022-05-01 10:22
我来回答
共1个回答
热心网友
时间:2022-04-12 14:20
Cocos2Dx提供了调度器。结合调度器,我们可以不断地修改节点的属性,从而实现丰富的动态效果。但是这样做过于麻烦。举个例子,我们需要把一个精灵从一个位置移动到另外一个位置。从我们前面提到的内容来思考一个可行的方案:在父节点的update中,将它的位置移动镇间隔时间移动的距离。假定目标位置到初始距离为d,移动时间指定为t秒,帧间隔时间1/60秒,那么每个update我们需要往目标位置移动d/60t。这还是匀速地移动,如果要求加速移动的效果,或者减速移动的效果,情况就变得更加复杂一些了。
为了简化节点的动作执行,一般是CCSprite,Cocos2Dx提供了CAction来支持动作。动作可以简单地分为两类,一是瞬时动作,即立即完成的动作;二是持续性动作,即动作的执行需要持续一段时间。另外,我们还需要有能够组合各种动作的能力,称之为复合动作。下面我们,先看看动作的分类。
瞬时动作。瞬时动作就是下一帧就要完成的动作,比如定位、缩放。其实这样的动作不需要定时机制,修改节点的属性即可,但还是封装为一个动作,目的是方便进行做动作的组合。瞬时动作包括:
CCPlace:将节点放置到某个指定位置,其作用与修改节点的Position属性相同。
CCFlipX和CCFlipY:用于将精灵沿X和Y轴反向显示,其作用与设置精灵的FlipX和FlipY属性相同。
CCShow和CCHide:用于显示和隐藏节点,其作用与设置节点的Visible属性的作用一样。
CCCallFunc:CCCallFunc系列动作包括CCCallFunc、CCCallFuncN、CCCallFuncND,以及CCCall- FuncO四个动作,用来在动作中进行类的实例方法的调用。
持续性动作。持续性动作,以为着动作的执行需要持续一段时间。所以,这些都做都需要指定动作执行的时间:ration。持续性动作还可以根据产生的效果不同进一步细分。
位置变化动作:针对位置(position)属性。
CCMoveTo和CCMoveBy:用于使节点做直线运动。
CCJumpTo和CCJumpBy:使节点以一定的轨迹跳跃到指定位置。
CCBezierTo和CCBezierBy:使节点进行曲线运动,运动的轨迹由贝塞尔曲线描述。
by是相对于节点的位置;to是绝对位置。
属性变化动作:通过属性值的逐渐变化来实现动画效果。
CCScaleTo和CCScaleBy:产生缩放效果,使节点的缩放系数随时间线性变化。
CCRotateTo和CCRotateBy:产生旋转效果。
CCFadeIn和CCFadeOut:产生淡入淡出效果,其中前者实现了淡入效果,后者实现了淡出效果。
CCFadeTo:用于设置一段时间内透明度的变化效果。
CCTintTo和CCTintBy:设置色调变化。可以理解为RGB颜色中的某一种颜色值变化了。
视觉特效动作:一些特殊的视觉效果。
CCBlink:使目标节点闪烁。
CCAnimation:播放帧动画,用帧动画的形式实现动画效果。
控制动作:对一些列动作进行精细控制。
CCDelayTime:将动作延时一定的时间才执行。
CCRepeat:把现有的动作重复一定次数。
CCRepeatForever:现有动作一直执行下去。
复合动作。复合动作是由一些基本动作一起组合成的新动作。可以满足游戏需要的复杂动作需求。
CCSpawn:允许一批动作同时执行。
CCSequence:顺序执行一系列动作。
CCSpeed:改变动作执行的速度。
CCActionEase:是一类动作,不同于CCSpeed的匀速执行,CCActionEase允许多样化地控制速度。
CCEaseRateAction
CCEaseIn
CCEaseOut
CCEaseInOut
CCEaseExponentialIn
CCEaseExponentialIn
CCEaseExponentialInOut
CCEaseSineIn
CCEaseSineOut
CCEaseSineInOut
CCEaseElastic
CCEaseElasticIn
CCEaseElasticOut
CCEaseElasticInOut
CCEaseBounce
CCEaseBounceIn
CCEaseBounceOut
CCEaseBounceInOut
CCEaseBackIn
CCEaseBackOut
CCEaseBackInOut