Cocos2d-X中的CCAction

2024-05-06 05:58
文章标签 cocos2d ccaction

本文主要是介绍Cocos2d-X中的CCAction,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CCAction用于创建各种动作


CCAction类及其子类的结构图:

程序实例1:创建一个延时性动作

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(480,320));addChild(sprite);//延迟性动作//第一个参数:精灵运动所花的时间//第二个参数:精灵运动的终止位置CCAction* moveTo = CCMoveTo::create(10, ccp(0,0));sprite->runAction(moveTo);return true;
}

执行结果:


程序实例2:创建一个立即性动作

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(480,320));addChild(sprite); //立即性动作CCPlace* place = CCPlace::create(ccp(0,0));sprite->runAction(place);return true;
}

程序实例3:动作的顺序封装(先执行延迟性动作,后执行立即性动作)

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(480,320));addChild(sprite);//延迟性动作(持续一段时间的动作)//第一个参数:精灵运动所花的时间//第二个参数:精灵运动的终止位置CCMoveTo* moveTo = CCMoveTo::create(2, ccp(0,0));//立即性动作CCPlace* place = CCPlace::create(ccp(100,100));//动作的顺序封装CCSequence* seq = CCSequence::create(moveTo, place, NULL);sprite->runAction(seq);return true;
}

执行结果:



程序实例4:动作的并发封装(延迟性动作和立即性动作一起执行)

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(100,100));addChild(sprite);//延迟性动作(持续一段时间的动作)//第一个参数:精灵运动所花的时间//第二个参数:精灵运动的终止位置CCMoveTo* moveTo = CCMoveTo::create(10, ccp(0,0));//立即性动作CCPlace* place = CCPlace::create(ccp(100,100));//动作的并发封装CCSpawn* spawn = CCSpawn::create(moveTo, place, NULL);sprite->runAction(spawn);return true;
}


执行结果:



程序实例5:动作反转

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(200,200));addChild(sprite);//动作反转(从ccp(100,100)-ccp(200,200)-ccp(100,100))CCMoveBy* moveBy = CCMoveBy::create(10, ccp(100, 100));CCAction* moveBack = moveBy->reverse();CCAction* action = CCSequence::create(moveBy, moveBack, NULL);sprite->runAction(action);return true;
}

执行结果:


程序实例6:精灵跳跃

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(100,100));addChild(sprite);//精灵跳跃//第一个参数:完成跳跃所花的时间//第一个参数:跳跃到的位置//第一个参数:跳跃的高度//第一个参数:跳跃的次数CCJumpBy* jumpBy = CCJumpBy::create(10, ccp(-100,-100), 80, 5);sprite->runAction(jumpBy);return true;
}


执行结果:



程序实例7:精灵旋转

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");//设置精灵的位置(精灵运动的起始位置)sprite->setPosition(ccp(100,100));addChild(sprite);//精灵旋转CCRotateBy* rotateBy = CCRotateBy::create(10, 360);sprite->runAction(rotateBy);return true;
}


执行结果:



程序8:sequence的动作反转

#include "Action.h"CCScene* Action::scene()
{CCScene* scene = CCScene::create();Action* layer = Action::create();scene->addChild(layer);return scene;
}bool Action::init()
{CCLayer::init();//创建精灵CCSprite* sprite = CCSprite::create("CloseNormal.png");sprite->setPosition(ccp(200, 200));addChild(sprite);	//sequence的动作反转CCMoveBy* moveBy = CCMoveBy::create(2, ccp(100, 100));CCJumpBy* jumpBy = CCJumpBy::create(2, ccp(-100, -100), 80, 5);CCRotateBy* rotateBy = CCRotateBy::create(2, 180);CCSequence* seq = CCSequence::create(moveBy, jumpBy, rotateBy, NULL);CCSequence* seq2 = CCSequence::create(seq, seq->reverse(), NULL);//动作执行无限次sprite->runAction(CCRepeatForever::create(seq2));return true;
}

执行结果:





这篇关于Cocos2d-X中的CCAction的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963568

相关文章

Cocos2d-x自适应Android屏幕分辨

ndroid下分辨率太多,不太可能为每种分辨率做一套资源,目前一般来说比较流行的是320*480, 800*400, 854*400。当然现在720P的也出来了,但至少目前不是主流机型^_^. 对于不支持的分辨率,我希望的是能够按照屏幕大小按比例缩放,即有了下面的代码。 1:ViewAutoScale 写了一个ViewAutoScale函数,如下:   #include "ViewAuto

cocos2d-x Android实现广告条竖立放置

 2:实现 原理:将屏幕设置为竖屏,然后CCDirector::setDeviceOrientation()设置为cocos2d-x为横屏。            在这种转屏模式下,控件是不会旋转的 缺点:所有Android原生控件仍然是竖立的 注意事项: ccTouchesBegan,ccTouchesMoved, ccTouchesEnded传入的坐标值仍然是屏幕坐标

Cocos2d-x 场景切换深入篇

接着上一次的场景切换1,要补充一些内容 如果Last对应的回调函数是这样写的 void MyScene::LastSceneCallback(CCObject* pSender)  {   //CCScene* scene =new MyScene();   //CCLayer* pLayer = new LayerPanda();   //scene->addChild(pLayer

cocos2d-x ScrollView(上)

scrollView 的调用问题困扰我很久,昨天才有时间继续研究这个,可惜最后还是没能完全解决它存在的问题。。。 看头文件: [cpp] view plain copy #ifndef __HELLOWORLD_SCENE_H__  #define __HELLOWORLD_SCENE_H__    #include "cocos2d.h"    #include "../..

cocos2d-x 重力感应

本文没你想象的那么,,复杂。其实就是通过重力感应控制个小球移动而已。 先看头文件: [cpp] view plain copy #ifndef __HELLOWORLD_SCENE_H__  #define __HELLOWORLD_SCENE_H__    #include "cocos2d.h"  USING_NS_CC;    class HelloWorld : public

Cocos2D-X开发神器CocoCreator使用介绍

你还在为搭建Cocos2d-x开发环境而头痛么,还在为平台移植问题而困扰么,我想大家都想更加快速得进行开发,今天才知道这个神器的,稍微使用了一下,觉得还是挺ok的一个开发工具,所以这里推荐给大家。   可以到下面地址下载:    http://cococreator.com/         更详细的介绍请参考CSDN认证专家小巫的博客文章:  ,手机游戏开发培训;      http:/

cocos2d-x 如何使用CCProgressTimer作为血条,实现跟随怪物进行移动,自动掉血,然后死亡。

Cocos2d-x中类CCProgressTimer实现游戏人物血条 一、CCProgressTimer的基本使用步骤: cocos2d-x的进度条函数CCProgressTimer,我们可以这样定义: 1. //s_pPathSister1为图片的路径 2. CCProgressTimer *left = CCProgressTimer::create(

cocos2d的暂停/恢复

cocos2d提供了比较重要的有3种暂停、恢复的机制 分别是CCDirector, CCActionManager, CCScheduler提供的 1 CCDirecotor: -(void) pause; -(void) resume; 导演类的暂停恢复是针对整个运行场景的,所以如果我们还想在暂停的画面上做其他事情,不推荐这种方法 2 CCActionManager -(voi

cocos2d-x基础知识(四) 简单菜单及坐标系

关于cocos2d坐标系的一点点心得   cocos2d-x 中关于convertToNodeSpace 的用法: cocos2d-x 中关于convertToNodeSpace 的用法: A->converToNodeSpace(CCPoint point )的意思是将point 转换成A的坐标系中的位置点。 我在做连连游戏中由于精灵在自定义的CC

cocos2d-x基础知识 坐标系 -- 很好的文章

无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥奔头了。所以玩cocos2d,一上来就先把各种与坐标有关的东西搞清楚。   基本的两个坐标系:屏幕坐标系和GL坐标系。 屏幕坐标系x轴朝右,y轴朝下。默认原点在左上角。 GL坐标系x轴朝右,y轴朝上。默认原点在左下角。          在调用任何需要设置位置的函数,或从函数获取位置信息前,