Action相当于是Cocos2d-x里面的动画操作,在Cocos2d-x里面的动画基类是CCAction类,从CCAction类派生出来的就有很多常用的动作的实现类,利用这些类就可以给我们游戏的精灵实现丰富的动作效果,类似于我们在WP8里面使用各种各样的动画类实现动画效果一样。那么下面就是这些类的结构图:

官方的技术文档可以参考下面的地址:

http://www.cocos2d-x.org/reference/native-cpp/d7/d12/classcocos2d_1_1_c_c_action.html

那么从上图可以看到Cocos2d-x提供了很多基本的动作类,主要包括两大类:一类是瞬时动作(CCActionInstant),一类是延时动作(CCActionInterval)。

瞬时动作CCActionInstanse是没有执行过程,动作瞬间就执行完成了;CCActionInterval则是执行需要一个过程,跟我们编写的普通程序的动画一样的原理。下面我们主要介绍下延时动作,延时动作有下面这些:移动(CCMoveTo/CCMoveBy)、缩放(CCScaleTo/CCScaleBy)、旋转(CCRotateTO/CCRotateBy)、扭曲(CCSkewTo/CCSkewBy)、跳跃(CCJumpTo/CCJumpBy)、贝塞尔曲线(CCBezierTo/CCBezierBy)、闪烁(CCBink)、淡入淡出(CCFadeIn/CCFadeOut)、染色(CCTintTo/CCTintBy)等,我们也可以把上面这些动作的几个组合成一个序列来执行,多种效果混合在一起。

下面是一些代码的实例:

//在init方法里面初始化当前的实例
bool RotateWorldTest::init()
{
bool bRet = false; do
{
//CCLayer进行初始化,初始化失败跳出循环
if ( !CCLayer::init() )
{
break;
}
//获取手机屏幕的大小
CCSize size = CCDirector::sharedDirector()->getWinSize();
//创建图片精灵
CCSprite *sprite = CCSprite::create("cat.png");
sprite->setPosition(ccp(size.width * 0.5, size.height * 0.5));
sprite->setScale(1.5f);
this->addChild(sprite);
//移动
//从当前的位置到新的位置
CCActionInterval* actionMoveTo = CCMoveTo::create(, ccp(size.width-, size.height-));
sprite->runAction( actionMoveTo);
//从当前的位置递增到另外的位置,然后再返回
CCActionInterval* actionMoveBy = CCMoveBy::create(, ccp(,));
CCActionInterval* actionMoveByBack = actionMoveBy->reverse();
sprite->runAction( CCSequence::create(actionMoveBy, actionMoveByBack, NULL)); //缩放
CCActionInterval* actionScaleTo = CCScaleTo::create(2.0f, 0.5f);
sprite->runAction( actionScaleTo);
CCActionInterval* actionScaleBy = CCScaleBy::create(2.0f, 1.0f, 10.0f);
sprite->runAction( CCSequence::create(actionScaleBy, actionScaleBy->reverse(), NULL)); //倾斜
CCActionInterval *actionSkewTo = CCSkewTo::create(, 37.2f, -37.2f);
sprite->runAction( actionSkewTo);
CCActionInterval *actionSkewBy = CCSkewBy::create(, 0.0f, -90.0f);
sprite->runAction(actionSkewBy); //旋转
CCRotateTo* actionRotateTo = CCRotateTo::create(, 37.2f, -37.2f);
sprite->runAction( actionRotateTo);
CCRotateBy* actionRotateBy = CCRotateBy::create(, 0.0f, -90.0f);
sprite->runAction( actionRotateBy); //跳跃
CCActionInterval* actionJumpTo = CCJumpTo::create(, ccp(,), , );
sprite->runAction( actionJumpTo);
CCActionInterval* actionJumpBy = CCJumpBy::create(, ccp(,), , );
CCActionInterval* actionJumpByBack = actionJumpBy->reverse();
sprite->runAction( CCSequence::create(actionJumpBy, actionJumpByBack, NULL));
CCActionInterval* actionJumpUp = CCJumpBy::create(, ccp(,), , );
sprite->runAction( CCRepeatForever::create(actionJumpUp)); //贝塞尔曲线运动
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(, size.height/);
bezier.controlPoint_2 = ccp(, -size.height/);
bezier.endPosition = ccp(,);
CCActionInterval* bezierForward = CCBezierBy::create(, bezier);
CCActionInterval* bezierBack = bezierForward->reverse();
CCAction* rep = CCRepeatForever::create(CCSequence::create( bezierForward, bezierBack, NULL));
sprite->runAction( rep); sprite->setPosition(ccp(,));
ccBezierConfig bezier2;
bezier2.controlPoint_1 = ccp(, size.height/);
bezier2.controlPoint_2 = ccp(, -size.height/);
bezier2.endPosition = ccp(,);
CCActionInterval* bezierTo1 = CCBezierTo::create(, bezier2);
sprite->runAction(bezierTo1); sprite->setPosition(ccp(,));
CCActionInterval* bezierTo2 = CCBezierTo::create(, bezier2);
sprite->runAction(bezierTo2); //闪烁效果
CCActionInterval* actionBlink1 = CCBlink::create(, );
sprite->runAction( actionBlink1); //淡出淡入
CCActionInterval* actionFadeIn1 = CCFadeIn::create(1.0f);
CCActionInterval* action1FadeInBack = actionFadeIn1->reverse();
sprite->runAction( CCSequence::create( actionFadeIn1, action1FadeInBack, NULL));
CCActionInterval* actionFadeOut2 = CCFadeOut::create(1.0f);
CCActionInterval* actionFadeOut2Back = actionFadeOut2->reverse();
sprite->runAction( CCSequence::create( actionFadeOut2, actionFadeOut2Back, NULL)); //色彩
CCActionInterval* actionTint1 = CCTintTo::create(, , , );
sprite->runAction( actionTint1);
CCActionInterval* actionTint2 = CCTintBy::create(, -, -, -);
CCActionInterval* actionTint2Back = actionTint2->reverse();
sprite->runAction( CCSequence::create( actionTint2, actionTint2Back, NULL)); //接收界面的的触摸事件
setTouchEnabled(true); bRet = true;
} while ();
//返回成功
return bRet;
}

把代码复制到Hello World项目里面,就可以看到相关的运行效果了。

[Cocos2d-x For WP8]Action 常用动作的更多相关文章

  1. Tip:JSP标签也称之为Jsp Action(JSP动作)元素

    JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. ================ &l ...

  2. odoo开发笔记:Server+Action服务器动作自动触发执行

           Odoo的市场定位是SME(中小型企业),这个市场的ERP产品,多如牛毛,产品各具特色.不过,Odoo的自动化处理机制,可以睥睨天下,无人能及.包括一些大型国产软件,如用友.金蝶也不具备 ...

  3. 【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作

    1.黑白名单当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单&qu ...

  4. cocos2D v3.x 中action的回调block变化

    cocos2D v2.x中有带参数的回调block: id blk = [CCCallBlockN actionWithBlock:^(CCNode *node){ node.position = o ...

  5. WP8开发常用解决方案收集

    我其实不怎么做wp的东西.但是偶尔还是会用到, 但是wp8开发的资料确实难找.特开此贴,记录一些常见的解决方案 1.水平滑动动画(比如app首次使用说明就可以用这个做) http://www.cnbl ...

  6. jsp常用动作

    jsp:include 动态包含: jsp:forward 转发: jsp:useBean 实例化bean对象: jsp:setProperty 设置一个属性值 jsp:getProperty 获取一 ...

  7. cocos2d-x 3.1.1 学习笔记[3]Action 动作

    这些动画貌似都非常多的样子,就所有都创建一次. 代码例如以下: /* 动画*/ auto sp = Sprite::create("card_bg_big_26.jpg"); Si ...

  8. cocos2D v3.x中动作回调函数的变化

    cocos2D v3.x版本中的动作的回调函数不能再带任何参数并且不能返回任何值. 官方给出的传递参数的办法是: 选择器(selector)不能带有任何形参,选择器需要的参数必须通过ivar或prop ...

  9. JSP——JavaServer Page中的隐式对象(implicit object)、指令(directive)、脚本元素(scripting element)、动作(action)、EL表达式

    目录 1.JSP概述 2.注释(comment) 2.1.JSP注释 2.2.HTML注释 3.隐式对象(implicit object) 3.1.隐式对象清单 3.2.request对象 3.3.o ...

随机推荐

  1. Windows/Centos安装GO语言环境

    转载:http://www.haiyun.me/archives/1009.html Centos下使用epel源安装: 1 yum install golang Centos/Linux下源码安装g ...

  2. MySql 插入数据中文乱码

    在数据库连接URL后加上characterEncoding=UTF-8 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/ssm ...

  3. 基于Matlab的MMSE的语音增强算法的研究

    本课题隶属于学校的创新性课题研究项目.2012年就已经做完了,今天一并拿来发表.   目录: --基于谱减法的语音信号增强算法..................................... ...

  4. ldd查询命令或软件共享的函数库(动态)

    <1> ldd - print shared library dependencies SYNOPSIS ldd [OPTION]... FILE... DESCRIPTION ldd p ...

  5. Fast Power

    Calculate the a^n % b where a, b and n are all 32bit integers. Example For 2^31 % 3 = 2 For 100^1000 ...

  6. 44. log(n)求a的n次方[power(a,n)]

    [题目] 实现函数double Power(double base, int exponent),求base的exponent次方,不需要考虑溢出. [分析] 这是一道看起来很简单的问题,很容易写出如 ...

  7. Linux系统排查2——CPU负载篇

    本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. ...

  8. CodeForces - 426A(排序)

    Sereja and Mugs Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Sub ...

  9. bootstrap学习总结1

    什么是Bootstrap? bootstrap就是一个前端框架,有Twitter公司开发 最大的优点: 开源 : 响应式设计:Bootstrap 的响应式 CSS 能够自适应于台式机.平板电脑和手机. ...

  10. ligureUI 刷新列求和

    dataGrid=$("#dataGrid").ligerGrid({ columns: [ {display:, align:'left' }, {display:, align ...