cocos2d-x ios游戏开发初认识(七) 简单的动画

前面有一节说了帧动画,就是让精灵改变自己的位置、形状、大小来实现相应的动作,这讲主要是要通过一些方法来实现精灵的移动,产生各种炫丽的动画,也可能让你找到一点游戏场景。

下面具体根据代码分析:

为了清晰最好将前几节的代码注释掉。

//根据前面的知识先创建一个菜单

CCMenuItemFont *item =CCMenuItemFont::create("开始游戏",this,
menu_selector(MainScene::onMenuItem));//点击事件

//添加到菜单栏里面

CCMenu *menu =
CCMenu::create(item,NULL);//可以传多个

menu->setPosition(ccp(100,500));

this->addChild(menu);

//创建一个精灵

sprite =
CCSprite::create("Icon-72.png");

sprite->setPosition(ccp(300,300));

this->addChild(sprite);

运行:

在onMenuItem函数里实现一些动画:

//1.实现精灵的隐藏

CCHide *hide =CCHide::create(); //隐藏精灵

sprite->runAction(hide);         //运行动画

运行 点击开始游戏:

发现精灵隐藏了,这里有很多动画都可以去尝试

CCHide *hide =CCHide::create(); //隐藏精灵

CCFadeTo *to =
CCFadeTo::create(2,0);
//0~255 淡入淡出用时2s

CCMoveTo *toto =
CCMoveTo::create(2,ccp(500,
300)); //移动到某个点用时2s

CCMoveBy *toby =
CCMoveBy::create(2,ccp(300,
0));   //2秒增加 x加300
y不变

CCJumpBy *by =CCJumpBy::create(2,ccp(100,0),
200,
1);//2秒钟内跳到x,y为(300,0)的位置每次会跳200高一共跳30次

sprite->runAction(hide);         //运行动画

这些是一些基础的动画 都可以去尝试 截图看不到明显的效果,只要sprite->runAction(hide)
改括号里面内容。

//2.实现一个简单的轨迹

轨迹图片:

//实现一个轨迹

CCPointArray *pa =CCPointArray::create(5);//创建一个点数组

pa->addControlPoint(ccp(0,0));

pa->addControlPoint(ccp(100,0)); 
//向右移动

pa->addControlPoint(ccp(100, -50));//向下移动

pa->addControlPoint(ccp(150, -50));//向右移动

pa->addControlPoint(ccp(150,0)); 
//向向移动

pa->addControlPoint(ccp(300,0)); 
//向右移动

CCCardinalSplineBy *spby =CCCardinalSplineBy::create(5,
pa,1);
//按轨迹移动

sprite->runAction(spby);           //运行一个动画

运行:

//3.实现一个曲线

代码:

//用Bezier实现曲线运动

ccBezierConfig bc;

bc.controlPoint_1 =ccp(400,
400); //控制点1

bc.controlPoint_2 =ccp(800,
200); //控制点2

bc.endPosition =ccp(900,
300);    //终点

CCBezierTo *bezie =
CCBezierTo::create(3, bc); //传引用

sprite->runAction(bezie);           //运行一个动画

运行:

自己运行才能看到效果!!!

//4.通过CCSequence 实现组合动画 顺序执行

//用CCSequence实现组合动画 顺序执行

CCMoveTo *tototo =
CCMoveTo::create(2,ccp(900,
300));//移动

CCEaseSineIn *in =
CCEaseSineIn::create(tototo);     
//控制速度先慢后快可以加可以不加试试

CCBlink *blink =
CCBlink::create(3,10);             
//闪烁一个动画

CCDelayTime *delay =CCDelayTime::create(2);

CCSequence *sequence =
CCSequence::create(in,delay,blink,NULL);//组合动画按顺序执行
先移动
然后延时
最后闪烁

sprite->runAction(sequence);           //运行一个动画

运行:

自己运行才能看到效果!!!

//5.通过CCSpawn 实现组合动画
并行执行

//并行执行动画

CCMoveTo *totototo =
CCMoveTo::create(2,
ccp(900,
300));

CCRotateBy *rotate =
CCRotateBy::create(2,
3600); //旋转 3600度

CCSpawn *spawn = CCSpawn::create(totototo,rotate,NULL);

sprite->runAction(spawn);

运行:

自己运行才能看到效果!!!

//6.动画执行完毕 可以进行回掉

先看  CCCallFunc 类的创建:

CCCallFunc *func = CCCallFunc::create(this, <#SEL_CallFunc selector#>) SEL_CallFunc的定义

typedef
void (CCObject::*SEL_CallFunc)(); 由此看出SEL_CallFunc 是个函数指针 指向一个没有函数参数 函数的返回值为void的函数

下面就定义一个这样的函数:

.h文件:

class MainScene:public
CCLayer {

private:

void onCallFun();              
//动画执行完
回掉函数

.cpp文件 函数的实现:

void
MainScene::onCallFun()

{

CCLOG("action over");

}

只做了一个打印。。

下面看回掉的具体实现代码:

//并行执行动画

CCMoveTo *totototo =
CCMoveTo::create(2,
ccp(900,
300));

CCRotateBy *rotate =
CCRotateBy::create(2,
3600); //旋转 3600度

CCSpawn *spawn = CCSpawn::create(totototo,rotate,NULL);

//    sprite->runAction(spawn);

//动画执行完后
回掉

CCCallFunc *func =
CCCallFunc::create(this,
callfunc_selector(MainScene::onCallFun));

CCSequence *seq =
CCSequence::create(spawn,func,NULL); 
//添加到队列

sprite->runAction(seq);

运行:

可以看到 当动画执行完后 action over 被打印出来。。。

cocos2d-x ios游戏开发初认识(七) 简单的动画,布布扣,bubuko.com

时间: 2024-10-18 11:28:00

cocos2d-x ios游戏开发初认识(七) 简单的动画的相关文章

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检测

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其它的植物只需触摸那个植物将其拖入到想要摆放的位置,这其实就是这节要写的触摸事件.还可以发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自动消失,这就这节要说的碰撞检测. 下面具体看代码的实现: 做ios开发有触摸事件cocos2d同样也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { private: v

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

我们知道,一个游戏少不了声音,一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来,顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: 1.新建一个cocos2d工程添加相应的声音图片资源: 播放声音所用到的内容: 代码: 这里可以先在RootViewController.mm里面设置屏幕 禁止旋转 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientat

cocos2d-x ios游戏开发初认识(五) CCsprite精灵类

这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上添加如下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png"); CCSize winSize  =CCDirector::sharedDirector()->getWinSize(); //得到屏幕的尺寸 bg->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addCh

cocos2d-x ios游戏开发初认识(六) 渲染的优化

做程序开发肯定要考虑到内存的优化,毕竟iphone本身的内存就不是非常大.这一节主要说这个cocos2d开发对内存的优化,详细表如今,既能够对同样的精灵(图片)仅仅渲染一次,也能够对不能的精灵仅仅渲染一次. 以下是程序的做法,先屏蔽前面的代码. 先简介一下 CCSpriteBatchNode类,它是用来优化游戏渲染效率的.CCSpriteBatchNode 中的全部CCSprite仅仅会被渲染1次,因此能够提高游戏的FPS.限制:增加到CCSpriteBatchNode 中的CCSprite必须

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检測

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自己主动消失,这就这节要说的碰撞检測. 以下详细看代码的实现: 做ios开发有触摸事件cocos2d相同也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { privat

史上最全最完整的IOS 游戏开发 PDF电子书定制下载

<iOS 5游戏开发>作者:(新西兰)James·Sugrue著 页数:191 出版社:北京市:人民邮电出版社 出版日期:2012.08 简介:<iOS5游戏开发>是一本iOS5游戏开发的基础入门书.全书使用通俗易懂的简单实例,带领读者经历构建经典动作游戏的整个周期.读者在本书的阅读过程中,将经历从开发概念.规划设计一直到编写实际代码的全过过程.本书的每一章,都将演示游戏创建过程中的一个逻辑步骤,读者将在其中学习如何创建Sprite,用触摸屏.重力感应器和屏幕游戏棒控制玩家角色等-

【Cocos2D研究院之游戏开发】

http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Cocos2D研究院之打开全新ViewController与返回(八) 雨松MOMO [Cocos2D研究院之游戏开发] 围观5745次 17条评论          之前cocos2d的文章都是由魏凯同学维护,从今天开始我也会抽时间写点cocos2d的文章.最近在研究如何将IOS游戏与软件结合起来.通常游

iOS 游戏开发 博客

1. http://www.cnblogs.com/kesalin/archive/2012/11/10/ios_game_dev_resource.html   ( iOS游戏开发教程) 最近几天仔细了解了iOS游戏开发引擎,常用的cocos2d,Unity引擎,那么Unity是非免费的,而cocos2d则是免费开源的: 最后促使我选择cocos2d的原因有两点: 1.最重要的原因是它对应的开发工具,尤其是 “ParticleDesigner”,粒子系统编辑器,非常的喜欢(需付费$7.99美元

iOS游戏开发游戏功能之外的东西

对于一个游戏的开发,我们除了完成游戏的功能之外,还有多少东西我们需要考虑呢? 很多,也很烦! 但做过一遍之后下一次就会很简单. 都有什么东西我们想添加到游戏当中呢? (1)分享功能 (2)评分功能 (3)游戏中心(GameCenter) (4)广告(iAd以及其他广告比如Admob) (5)应用内购买 (6)... 这些功能并不是完全必要的,要根据情况考虑.但比如分享,评分,这些功能能提高一个游戏的扩散速度,显示是值得每一个游戏都添加的功能. 下面稍微总结一下每一个功能的基本用法. PS:这只是