一,CCActionManager 管理所有节点动作的对象

来看看打飞机里面的一个onEnter 方法

- (void)onEnter
{
[super onEnter]; //一定要注意添加此方法,否则将停留在开始界面
CGSize winSize = [[CCDirector sharedDirector] winSize];
[CCMenuItemFont setFontSize:20];
[CCMenuItemFont setFontName:@"Arial"]; CCMenuItemFont *startItem = [CCMenuItemFont itemWithString:@"开始游戏" block:^(id sender)
{
_isGameStarted = YES;
CCMenuItem *item = (CCMenuItemFont*)sender;
item.visible = NO; //6.spawn enemy after 1.0 sec
[self performSelector:@selector(spawnEnemy)
withObject:nil
afterDelay:1.0f]; //7.enable accelerometer
self.isAccelerometerEnabled = YES;
//9.enable touch
self.isTouchEnabled = YES;
}];
startItem.position = ccp(winSize.width / 2, -winSize.height / 2);
_startGameMenu = [CCMenu menuWithItems:startItem, nil];
_startGameMenu.position = CGPointZero;
[self addChild:_startGameMenu]; //7 基本动作 从原来的位置移动到新的位置
id moveBy = [CCMoveBy actionWithDuration:1.0 position:ccp(0, winSize.height)]; //位置的移动 [_startGameMenu runAction:moveBy]; //开始移动
//8 和位置有关的基本动作 //1 CCActionManager
[[[CCDirector sharedDirector] actionManager ] pauseTarget:_startGameMenu];//暂停 [self schedule:@selector(resumeStartMenuAction:) interval:1.0]; //等待十秒之后才能开始移动 //2CCAction 抽象类,几乎所有的类都继承该类 //3.CCFiniteTimeAction 该类为有限时间动作,包含CCActionInstant 瞬时动作 和CCActionInterval 区间动作,他们包含了很多不同的动作
//4 CCRepaeatForever 无限重复的动作 //5跟随节点的动作CCFollow .可以替代Camera
//6 CCSpeed 更还节点动作的速度。
// 7CCOrbitCamera 继承与CCActionCamera 。使用球坐标系围绕屏幕中心旋转摄像机的视角 } - (void)resumeStartMenuAction:(ccTime)dt
{
[self unschedule:_cmd]; //停止当前动作
[[[CCDirector sharedDirector]actionManager] resumeTarget:_startGameMenu]; }

二,基本动作:和位置相关的基本动作

CGSize winSize = [[CCDirector sharedDirector] winSize];

        CCSprite *plane = [CCSprite spriteWithFile:@"hero_1.png"];

        plane.position = ccp(winSize.width/2, winSize.height/2);

        [self addChild:plane];

        //2 moveBy 让节点对象在一定时间内移动一定的像素值  ,这个是相对于原位置的
[plane runAction:[CCMoveBy actionWithDuration:3 position:ccp(50, 0)]]; //3 CCjumpTo
[plane runAction:[CCJumpTo actionWithDuration:4 position:ccp(winSize.width, winSize.height) height:40 jumps:3]]; //4CCJumpBy 相对于原位置的移动 ,相对于原位置的偏移量为 100,0
[plane runAction:[CCJumpBy actionWithDuration:3 position:ccp(100, 0) height:100 jumps:4]]; //5CCBezier TO
ccBezierConfig c = {ccp(300, 100),ccp(50, 50),ccp(-50, -50)};
//1.参数一 相对于原位置的偏移,2,3分别是贝塞尔曲线的两个控制点
[plane runAction:[CCBezierTo actionWithDuration:3 bezier:c]]; //6 CCplace 将对象直接放到指定的位置
[plane runAction:[CCPlace actionWithPosition:ccp(10, 10)]];

三,和大小相关的基本动作

 //二 和大小相关的基本动作
// 1 CCScale TO、放大为原来的两倍
[plane runAction:[CCScaleTo actionWithDuration:2 scale:2]];
//2 CCScale By 缩小相应的倍数
[plane runAction:[CCScaleBy actionWithDuration:3 scale:3]];
[plane runAction:[CCScaleBy actionWithDuration:3 scaleX:0.5 scaleY:0.5]]; //对象的高度和宽度的缩小

四:和旋转有关的基本动作

 //三 和旋转有关的动作
//1 CCRotate To ,by ,超过180逆时针旋转,《180.顺时针旋转
[plane runAction:[CCRotateTo actionWithDuration:2 angle:290]];

五,和显示有关的基本动作

  //四 和显示有关的动作
//1 CCSHOW
[plane runAction:[CCShow action]];
//2CCHide
[plane runAction:[CCHide action]];
//3 切换uixiang的可视属性
[plane runAction:[CCToggleVisibility action]];
//4 闪动一定的次数
[plane runAction:[CCBlink actionWithDuration:5 blinks:10]];

六,和透明度有关的基本动作

//五 和透明度有关的动作
//1 CCFadeIn 透明度从0 -》 255
[plane runAction:[CCFadeIn actionWithDuration:8]];
//2 CCFadeOut 透明度 从255 - 》0
[plane runAction:[CCFadeOut actionWithDuration:5]];
//3 CCFadeto
[plane runAction:[CCFadeTo actionWithDuration:4 opacity:90]];

七,和色彩有关的基本动作

 //六  和色彩有关的动作
//1 CCTintTO 在一定时间内将节点着色到某个特定的RGB值
[plane runAction:[CCTintTo actionWithDuration:3 red:100 green:0 blue:1]]; //2 CCTintBy 大致相同

八和翻转相关的基本动作

 //七 和翻转有关的动作
//1 CCFlipX ,CCFlipY
[plane runAction:[CCFlipX actionWithFlipX:YES]];

2.组合动作

一,组合动作的类

//八 组合动作
//1 Spawn 动作数据,
[plane runAction:[CCSpawn actions:[CCFadeOut actionWithDuration:4],[CCScaleTo actionWithDuration:3 scale:2], nil]]; // 2 CCSequence 该组合可以按顺序执行多个动作,也可以包含多个组合动作 //九 Ease 动作 使用ease动作修改的是节点内部动作的速度,而不是动作的执行时间 id easeAction = [CCEaseBackOut actionWithAction:[CCMoveTo actionWithDuration:2 position:ccp(100+winSize.width/2, winSize.height/2)]]; id action = [CCSequence actions:easeAction,[CCScaleTo actionWithDuration:2 scale:2], nil]; [plane runAction:action];

二,一个飞机俯冲的组合动作的代码

#pragma mark - private methods
-(void) spawnEnemy{
//1.
CGSize winSize = [CCDirector sharedDirector].winSize;
CCSprite *enemySprite = [self getAvailableEnemySprite]; enemySprite.visible = YES;
enemySprite.position = ccp( arc4random() % (int)(winSize.width - enemySprite.contentSize.width) + enemySprite.contentSize.width/2 , winSize.height + enemySprite.contentSize.height + 10); //2.
float durationTime = arc4random() % 4 + 1;
id moveBy = [CCMoveBy actionWithDuration:durationTime
position:ccp(0,-enemySprite.position.y-enemySprite.contentSize.height)]; int choice = arc4random() % 4 + 1;
id easeMoveBy = nil;
switch (choice) {
case 1:
easeMoveBy = [CCEaseIn actionWithAction:moveBy];
break;
case 2:
easeMoveBy = [CCEaseExponentialIn actionWithAction:moveBy];
break;
case 3:
easeMoveBy = [CCEaseBounceIn actionWithAction:moveBy];
break;
case 4:
easeMoveBy = [CCEaseBackIn actionWithAction:moveBy];
break;
default:
break;
} id callback = [CCCallBlockN actionWithBlock:^(id sender)
{
CCSprite *sp = (CCSprite*)sender;
sp.visible = NO;
sp.position = ccp(0,winSize.height + sp.contentSize.height + 10);
CCLOG(@"reset enemy plane!");
}];
id action = [CCSequence actions:easeMoveBy,callback, nil]; CCLOG(@"enemySprite x = %f, y = %f",enemySprite.position.x, enemySprite.position.y);
[enemySprite runAction:action]; //3.
[self performSelector:_cmd withObject:nil afterDelay:arc4random()%3 + 1]; }

三,延迟动作

   //十 延迟动作
id action = [CCSequence actions:[CCDelayTime actionWithDuration:3],[CCMoveTo actionWithDuration:2 position:ccp(100 + winSize.width/2, winSize.height)], nil]; [plane runAction:action];

[一位菜鸟的COCOS-2D编程之路]COCOS2D中得动作,特效和动画的更多相关文章

  1. 赠书:HTML5 Canvas 2d 编程必读的两本经典

    赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...

  2. 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

    初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...

  3. Cocos 2d TestCPP 学习

    Cocos 2d testcpp包含了大量的demo, 对于新手学习cocos引擎具有非常大的帮助.因为接下来的开发项目有可能会用到该引擎,所以希望可以利用自己的业余时间提前熟悉起来.该篇文章会记录自 ...

  4. Quartz 2D编程指南(2) - 图形上下文

    一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...

  5. Quartz 2D编程指南(1) - 概览

    Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料,供大家参考 Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quar ...

  6. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  7. [问题解决]《GPU高性能编程CUDA实战》中第4章Julia实例“显示器驱动已停止响应,并且已恢复”问题的解决方法

    以下问题的出现及解决都基于"WIN7+CUDA7.5". 问题描述:当我编译运行<GPU高性能编程CUDA实战>中第4章所给Julia实例代码时,出现了显示器闪动的现象 ...

  8. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  9. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

随机推荐

  1. PHP框架原理

    本文主要来聊聊框架理论,但不针对任何一款框架,不过任何一款框架都离不开这个理论,首先我们了解下框架的来龙去脉,任何技术的出现都是为了解决某个问题,之前的博客有讲过smarty,其存在就是为了html和 ...

  2. cf 219D

    树形dp; 思想: 把正向边赋值为0:反向边赋值为1:然后求出点到其他点的最小距离: 两次dfs: 第一次是从下往上:记录每个点到所有子树中需要改变的边的条数: 第二次是自上往下:由父节点求子节点到所 ...

  3. centos网络安装中的注意点

    转自centos网络安装中的注意点 centos网络安装的教程网上很多,这里仅仅记录一下安装过程中网上别处提及很少的注意点. 1.centos默认会安装selinux,并且默认阻止ftp服务,所以要禁 ...

  4. 【Xamarin开发 Android 系列 5】 Xamarin 的破解

    原文:[Xamarin开发 Android 系列 5] Xamarin 的破解 有关这个话题,十分敏感,公司开发还是支持下商业版权吧,毕竟一帮猴子辛辛苦苦没日没夜的干活,不说开宝马奔驰,吃饭还是必须的 ...

  5. java提高篇(十)-----详解匿名内部类 ,形参为什么要用final

    在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...

  6. linux ERROR: ld.so: object '/lib/libcwait.so' from /etc/ld.so.preload cannot be preloaded: ignored.

    [root@ora9i 3238244]# lsb_release -a LSB Version:    :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:g ...

  7. BZOJ3156: 防御准备

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 442  Solved: 210[Submit][Status] Descript ...

  8. Java 编程下 Eclipse 如何设置单行代码显示的最大宽度

    Eclipse 下一行代码的默认宽度是 80 , 稍长一点的一行代码就会自动换行,代码可读性较差,我们可以自己在 Eclipse 对代码宽度进行设置. 设置路径为:[Window]→[Preferen ...

  9. active directory 学习和概念整理

    第一,在局域网内,如何管理计算机上的资源,需要一个管理策略. 微软提供了两种:工作组和域.两者区别就是,工作组是自治的,组内的计算机个个都作为独立.对等的自治实体而存在.恩,这也是以太网的设计初衷. ...

  10. Automator 简单使用流程

    iOS开发中常常要用到图片缩放的工作,有些需求流程很奇葩,根本找不到现成的工具去实现. 这时候,你可以去想一想Automator了. 示例:要把文件夹下所有的图片文件都缩小成原来的一半(搞iOS开发的 ...