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. HDU 1069&&HDU 1087 (DP 最长序列之和)

    H - Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format: ...

  2. ZJOI 游记

    在备战YZ提前招生考时去ZJOI玩了趟,ZJ果然人才辈出= =神犇讲课各种神听不懂啊orz day 0 Mon. 上午在AB班愉快地玩耍,下午就去HZ了. HZ真热啊... 学军也是节约= =空调都不 ...

  3. pip 直接安装tar.gz zip文件包 (windows linux mac 可用)

    在不能连接外网的机器上安装python的各种包,解压安装要人工输入多条命令: tar -zxvf Flask-WTF-0.10.0.tar.gz cd Flask-WTF-0.10.0 python ...

  4. 《ASP.NET MVC4 WEB编程》学习笔记------UrlHelper

    HtmlHelper帮助我们生成Html标记代码:UrlHelper帮助我们生成URL链接地址 我们学习一下UrlHelper帮助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC ...

  5. 【leetcode】Palindrome Partitioning II

    Palindrome Partitioning II Given a string s, partition s such that every substring of the partition ...

  6. Java for LeetCode 198 House Robber

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...

  7. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  8. [Android Pro] sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别

    reference : http://blog.csdn.net/xingfeng0501/article/details/7817121 1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索 ...

  9. [Git] Git 文件归档, include submodule

      git archive命令,可以对任意提交对应的目录树建立归档. $ git archive -o latest.zip HEAD  基于最新提交建立归档文件latest.zip $ git ar ...

  10. Road Construction(poj 3352)

    题意:求最少天几条边,使这个无向图变成双连通图. /* tarjan缩点后,形成一棵树,求出叶子节点数tot,答案是(tot+1)/2 */ #include<cstdio> #inclu ...