cocos2dx中的动作、特效、和动画

Action类继承自CCObject,它有移动速度类,跟随类,以及有限时间动作,其中最后一个分为瞬时动作,和延时动作。

瞬时动作

CCCallFunc 回调
CCFilpX X轴转
CCFilpY Y轴转
CCHide 隐藏
CCPlate 设置位置
CCShow 显示

延时动作

CCBezierBy/To 延贝塞儿曲线运动
CCBlink 闪烁
CCDelayTime 延时
CCMoveTo/By 移动
CCRotateTo/By 旋转
CCFadeIn 淡入
CCFadeOut 淡出
CCJumpBy/To 跳跞
CCSeuqence 帧序列,有序执行
CCTintTo 色值渐变动作
CCSpawn 多个动作同一时间进行
CCSaleTo/By 放大,缩小
CCAnimate 动画
CCRereate 有限次重复
CCReverseTime 时间逆向动作,通过action->reverse()来取得实例对像
CCRepeateForever 无限次重复动作
CCActionEase 变速动作
CCDeccelAmplitude 有相应幅度的动作,附动作时间,减速
CCAccelAmplitude 有相应幅度的动作,附动作时间,加速
CCAccelDeccelAmplit 有相应幅度的动作,附动作时间,变速

贝塞儿曲线的应用,参数1.动作时间,参数2.贝塞儿曲线的参数值CCBezierConfig(俩个控制点,一个终点)CCBezierTo/By的区别,To是绝对位置,By是相对位置。

typedef struct _ccBezierConfig {

//! end position of the bezier

Point endPosition;

//! Bezier control point 1

Point controlPoint_1;

//! Bezier control point 2

Point controlPoint_2;

} ccBezierConfig;

用法例子如下:

Sprite *spr = (Sprite *)this->getChildByTag(33);

ccBezierConfig config;

config.controlPoint_1 = Point(100,400);

config.controlPoint_2 = Point(600,400);

config.endPosition = Point(600,100);

spr->runAction(CCBezierTo::create(2.0,config));

CCFadeIn动作要注意的是首先要把透明度设为0  ,setOpacity(0);

基本样条动作

有时会希望用一些非常规轨道来描述的运动轨迹,只要生成离散的几个点,对像就会根据这这几个点模拟路径。三个参数分别是动作时间,点数组,拉力系数。CCCardinalSplineBy/To的区别,To是绝对路径,By是相对路径,定义点数组时,第一个点设置为(0,0),否则起始点被忽略。

缓冲动作,在实现运动的过程中,经常要实现一些加速或减速的动作。Ease系列方法改变了运动的速度,但并没有改变整体时间。分三类:

In action:action(开始的加速动作)

Out action:action(结束的加速动作)

Inout action:action(开始,结束的加速动作)

CCActionEase有很多子类,下面是速度时间坐标图

指数缓冲:EaseExponentialIn,EaseExponentialOut,EaseExponentialInOut

塞因缓冲:EaseSineIn,EaseSineOut,EaseSineInOut

跳跃缓冲:EaseBounceIn,EaseBounceOut,EaseBounceInOut

弹性缓冲:EaseElasticIn,EaseElasticOut,EaseElasticInOut

回震缓冲:EaseBackIn, EaseBackOut,EaseBackInOut

组合动作:CCSequence,CCSpawn,CCRepeat,CCrepeatForever

可调整速度动作,可以用它对目标动作封装,实现“慢动作”“快进”的效果。CCSpeed

延时动作:CCDelayTime,就是一段时间啥也不干,就一个参数时间,它一般放在一个CCSquence动作序列中引起一些效果。

函数回调动作CCCallFunc

CCCallFunc

CCCallFunc是执行对应的回调函数,其中回调函数不可带参数.
.   CCCallFuncN
    CCCallFuncN也是执行对应的回调函数,其中回调函数带一个参数.

CCCallFuncND

CCCallFuncND也是执行对应的回调函数,其中回调函数可带两个参数.

过程动作(载入动作),进度条,CCProgressTo ,CCProgressFromTo

CCProgressTo第一个参娄是时间,第二个参数是结束时图片的显示百分比

CCProgressFromTo第一个时间,第二个是开始时图片显示的百分比,第三个是结束时图片显示百分比,CCProgressTimer,传入精灵对像来定义,通过调用setType函数来设置动画的类型,kCCProgressTimerTypeRadial是圆形扫描动画,kCCProgressTimerTypeBar是直线的扫描动画。调用setReverseProgress函数设置正反的方向,kCCprogressTimerTypeBar类型通过setBarChangeRate设置水平和竖直的变化量。

bool HelloWorld::init()

{

if ( !Layer::init() )

{

return false;

}

CCProgressTo *progress = CCProgressTo::create(2.0,100);

CCProgressTimer *time = CCProgressTimer::create(CCSprite::create("Guide_Light_New.png"));

time->setPosition(400,240);

this->addChild(time);

time->setType(kCCProgressTimerTypeRadial);

time->runAction(RepeatForever::create(progress));

return true;

}

动画,除了上面的动作外,cocos2d-x还有一种动作,就是动画CCAnimate,要实现CCAnimate,还要定义一些CCAnimation

CCAnimationCache是一个单例,用于缓存所有动画和动画帧,

CCAnimationCache::sharedAnimationCache()->addAnimation(animatin,"run");

CCAnimationCache *animCache = CCAnimationCache::sharedAnimationCache();

CCAnimation *animi = animCache->animationByName("run");

通过CCAnimationCache::sharedAnimationCache()获得缓存CCAnimationCashe,通过addAnimation函数加入缓存动画,并命名,通过animationByName()取得相应的动画。

CCAnimation动画

CCAnimation * animi = Animation::create();

animi->addSpriteFrameWithFile("UI/shengjcg.png");

animi->addSpriteFrameWithFile("UI/shengjicg1.png");

animi->setDelayPerUnit(0.2);

CCAnimate *an = Animate::create(animi);

TexturePacker打包工具的简单用法

上面的Add Folder打开要打包的一系列图片,选的时候注意一下Allow Rotation选项和Trim选项这全根据情况勾选,默认是勾选的,然后调整大小合适,publicsh导出就可

1.读取plist文件

CCSpriteFrameCache *cache=CCSpriteFrameCache::sharedSpriteFrameCache();

cache->addSpriteFramesWithFile("baozha.plist");

CCSprite *spr = CCSprite::createWithSpriteFrame(cache->spriteFrameByName("PropsEffect_0_1.png"));

这样就可以通过纹理获得plist文件 中的某个精灵

2.形成CCAnimation

CCAnimation *HelloWorld::GetAnimate(const char *name,const int count,float delay)

{

CCArray *a=CCArray::array();

char str[100];

for(int i=0;i<count;++i)

{

sprintf(str,"%s%d.png",name,i);

a->addObject(cache->spriteFrameByName(str));

}

CCAnimation *animation = CCAnimation::animationWithSpriteFrames(a,delay);

return animation;

}

3.做action操作

CCAnimation *animation=GetAnimate("PropsEffect_0_",6,0.2f);

spr->runAction(CCRepeat::create(CCAnimate::create(animation),1));

时间: 2024-10-06 16:16:42

cocos2dx中的动作、特效、和动画的相关文章

Cocos2d-X中的动作特效

Cocos2d-X中提供了非常丰富的动作特效 例如:网格动画 扭曲特效 3D瓷砖波动特效 程序代码: #include "ActionEffect.h" #include "HelloWorldScene.h" static const char* _actionName[] = { "CCFadeOutBLTiles", "CCFadeOutDownTiles", "CCFadeOutTRTiles",

Cocos2d-X中的动作展示《二》

由于Cocos2d-X中的动作较多,我将所有的动作制作成了一个滚动视图,每个滚动视图上都有动作名,单击滚动视图就可以展示相应的动作 程序效果图: 使用滚动视图实现动作切换 动作展示 首先创建一个ActionMore类 ActionMore.h中的代码 #ifndef _ActionMore_H_ #define _ActionMore_H_ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_

Cocos2d-X中实现菜单特效

Cocos2d-X中可以讲菜单和动作结合起来使用实现菜单特效 程序实例1:使用菜单和动作的组合实现菜单特效<一> #include "MenuItem.h" CCScene* MenuItem::scene() { CCScene* scene = CCScene::create(); MenuItem* layer = MenuItem::create(); scene->addChild(layer); return scene; } bool MenuItem:

cocos2dx中的动作

CCAction是cocos2dx中专门用来处理动作相关的类,几乎所有的与动作相关的类都是从它派生而来的.而CCAction继承自CCObject class CCFiniteTimeAction : public CCAction 由CCFiniteTimeAction 派生出的两个主要类分别是: 瞬时动作 CCActionInstant 持续性动作 CCActionInterval 瞬时动作: 即时间间隔为0的动作,实质上要到下一帧才能执行的动作. 瞬时动作是指能立刻完成的动作,是CCFin

Cocos2d-x-v3中3D网格特效动画的应用

Cocos2d-x-v3中3D网格特效动画的应用 一.网格特效的使用原理 基础的动作是对节点整体进行移动,变形等操作,网格特效的原理是将节点分割成多个尺寸相同的网格,根据改变每个网格块的属性使整体节点产生3D的效果. 二.网格特效的基本用法 在cocos2d-x中,v3的版本新引入了一个类NodeGrid,专门用来包装网格的特效,示例如下:     //获取屏幕尺寸     Size visibleSize = Director::getInstance()->getVisibleSize();

Cocos2d-x手机游戏开发中-组合动作

动作往往不是单一,而是复杂的组合.我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作.组合动作包括以下几类:顺序.并列.有限次数重复.无限次数重复.反动作和动画.动画我们会在下一节介绍,本节我们重点顺序.并列.有限次数重复.无限次数重复和反动 下面我们通过一个实例介绍一下组合动作的使用,这个实例如下图所示,下图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的动作效果,点击Back按钮可以返回到菜单场景. 下面我们再看看具体的程序

Cocos2d-x Lua中实例:特效演示

Cocos2d-x Lua中实例:特效演示 下面我们通过一个实例介绍几个特效的使用,这个实例如下图所示,上图是一个操作菜单场景,选择菜单可以进入到下图动作场景,在下图动作场景中点击Go按钮可以执行我们选择的特性动作,点击Back按钮可以返回到菜单场景. 特效实例 我们重点看看MyActionScene场景,MyActionScene.lua主要代码如下: [html] view plaincopy … … local sprite                                 

Cocos2d-x Lua中网格动作

Cocos2d-x Lua中网格动作 GridAction它有两个主要的子类Grid3DAction和TiledGrid3DAction,TiledGrid3DAction系列的子类中会有瓦片效果,如下图所示是Waves3D特效(Grid3DAction子类),如后图所示是WavesTiles3D特效(TiledGrid3DAction子类),比较这两个效果我们会看到瓦片效果的特别之处是界面被分割成多个方格. Waves3D特效 WavesTiles3D特效 网格动作都是采用3D效果给用户的体验

Cocos2d-x 3.0 动作,动画

//执行一个action动作对象 runAction("action对象"); //暂停一个对象的动作 Director::sharedDirector()->getActionManger()->pauseTarget("对象"); //暂停所有对象的动作 Director::sharedDirector()->getActionManager()->pauseAllRunningActions(); //暂停所有对象的动作及其更新函数 p