Cocos2d-iPhone V3 (1) 其基本程序常用的行动框架和介绍

  • 博客:http://blog.csdn.net/prevention
  • 笔者:犀利哥

-

第一部分:一个 Cocos2d-iPhone V3 的基本框架

1. AppDelegate

首先看AppDelegate.h,类是继承自CCAppDeleagate,其它没什么特别的:

#import "cocos2d.h"
@interface AppDelegate : CCAppDelegate
@end

再看AppDelegate.m,仅仅要实现两个函数就可以,注意当中实现startScene就能够载入你自己定义的场景啦,简单吧:

#import "AppDelegate.h"
#import "MainScene.h" @implementation AppDelegate -(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setupCocos2dWithOptions:@{
CCSetupShowDebugStats: @(YES),
}];
return YES;
} - (CCScene *)startScene
{
return [HomeScene scene];
}

2. 你自己的场景类 MainScene

先看看MainScene.h,我们看有两个方法。一个是静态方法scene,一个是类方法init

#import "cocos2d.h"
#import "cocos2d-ui.h" @interface MainScene : CCScene + (MainScene *)scene;
- (id)init; @end

再看看MainScene.m,这里头东西就多了。首先看总体结构:

#import "MainScene.h"

@implementation MainScene
{
CCSprite *_sprite;
} + (MainScene *)scene { /* ... */ }
- (id)init { /* ... */ }
- (void)dealloc { /* ... */ }
- (void)onEnter { /* ... */ }
- (void)onExit { /* ... */ }
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event { /* ... */ } @end

必需要有一个静态方法返回一个自己定义的场景实例scene方法。还要有onEnteronExit表示进入/离开该场景就会调用。touchBegan是一个 Touch Handler。

2.1. 静态方法 scene

没什么好说的:

+ (MainScene *)scene
{
return [[self alloc] init];
}

2.2. init

- (id)init
{
// Apple recommend assigning self with supers return value
self = [super init];
if (!self) return(nil); // Enable touch handling on scene node
self.userInteractionEnabled = YES; // Create a colored background (Dark Grey)
CCNodeColor *background =
[CCNodeColor nodeWithColor:[CCColor colorWithRed:0.2f
green:0.2f
blue:0.2f
alpha:1.0f]];
[self addChild:background]; // Add a sprite
_sprite = [CCSprite spriteWithImageNamed:@"Icon-72.png"];
_sprite.position = ccp(self.contentSize.width/2,self.contentSize.height/2);
[self addChild:_sprite]; // Animate sprite with action
CCActionRotateBy* actionSpin = [CCActionRotateBy actionWithDuration:1.5f angle:360];
[_sprite runAction:[CCActionRepeatForever actionWithAction:actionSpin]]; // done
return self;
}
  • 调用superinit
  • 设置userInteractionEnabledYES来接收触摸事件
  • 加入背景节点,这里用的是CCNodeColor
  • 加入精灵节点CCSprite
  • 给精灵节点加入动作CCActionRotateBy
  • 返回self

2.3. 进入场景 Handler:onEnter

一定要记得调用superonEnter

- (void)onEnter
{
[super onEnter];
}

2.4. 离开场景 Handler:onExit

一定要记得调用superonExit

- (void)onExit
{
[super onExit];
}

2.5. Touch Handler

- (void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchLoc = [touch locationInNode:self];
CCActionMoveTo *actionMove =
[CCActionMoveTo actionWithDuration:1.0f position:touchLoc];
[_sprite runAction:actionMove];
}
  • 首先依据传入的UITouch參数来获取被触摸位置CGPoint
  • 依据获取到的位置设定CCAction,最后执行这个CCAction

第二部分:动作

1. 位移一段距离CCActionMoveBy

+ (id)actionWithDuration:(CCTime)duration position:(CGPoint)deltaPosition;

2. 位移到CCActionMoveTo

+ (id)actionWithDuration:(CCTime)duration position:(CGPoint)position;

3. 旋转一个角度CCActionRotateBy

注意当中的 angle 是角度(一周 360 度),不是弧度(一周 2π):

+ (id)actionWithDuration:(CCTime)duration angle:(float)deltaAngle;

4. 旋转到CCActionRotateTo

注意当中的 angle 是角度(一周 360 度),不是弧度(一周 2π):

+ (id)actionWithDuration:(CCTime)duration angle:(float)angle;

5. 渐变出现CCActionFadeIn

This action fades in the target, it modifies the opacity from 0 to 1.

+ (id)actionWithDuration:(CCTime)d;

6. 渐变消失CCActionFadeOut

This action fades out the target, it modifies the opacity from 1 to 0.

+ (id)actionWithDuration:(CCTime)d;

7. 渐变到CCActionFadeTo

你可能会注意到 Cocos2d 的源代码里有拼写错误。opacity写成了opactiyCCActionInterval.h中):

/**
* Creates a fade action.
*
* @param duration Action duration.
* @param opactiy Opacity to fade to.
*
* @return New fade action.
*/
+ (id)actionWithDuration:(CCTime)duration opacity:(CGFloat)opactiy;

-

转载请注明来自:http://blog.csdn.net/prevention

版权声明:本文博主原创文章。博客,未经同意不得转载。

Cocos2d-iPhone V3 (1) 其基本程序常用的行动框架和介绍的更多相关文章

  1. 移动端、PC端(前后台)、小程序常用的UI框架

    1.移动端UI库 ①.Vant UI 官方地址:https://youzan.github.io/vant/#/zh-CN/intro github地址:https://github.com/youz ...

  2. Cocos2d-x v3.1 Hello world程序(四)

    Cocos2d-x v3.1 Hello world程序(四) 在上一篇文章中我们我们已经使用Cocos-Console工具生成了工程,本机生成的目录为:"D:\CocosProject\T ...

  3. iPhone 真机调试应用程序

    原文:http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html 真机调试iphone应用程序 1.真机调试流程概述 1)       真机调试应用程序, ...

  4. 小程序常用API介绍

    小程序常用API接口  wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...

  5. 微信小程序常用样式汇总

    本文系转载: 原文作者:chenzheng8975 原文地址:https://www.cnblogs.com/chenzheng8975/p/9605186.html 微信小程序常用样式汇总 小程序特 ...

  6. iOS开发-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...

  7. 常用的CSS框架

    常用的CSS框架 之前在写自己的个人网站的时候,由于自己Web前端不是特别好,于是就去找相关的CSS框架来搭建页面了. 找到以下这么一篇文章(列出了很多常用的CSS框架): http://w3scho ...

  8. 像VUE一样写微信小程序-深入研究wepy框架

    像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...

  9. Linux运维常用的几个命令介绍【转】

    Linux运维常用的几个命令介绍 1. 查看系统内核版本​ [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kerne ...

随机推荐

  1. HEVC码率控制浅析——HM代码阅读之二

    上一篇文章主要讨论了RC的总体框架,本文开始分析具体的代码实现细节.分析的顺序按照总体框架来,即初始化-->更新. (1)m_cRateCtrl.init() #if M0036_RC_IMPR ...

  2. SVN的命令解析(感觉不错就转了)

    本文链接: http://www.php-oa.com/2008/03/12/svnminglingzailinuxxiadeshiyong.html .将文件checkout到本地目录 svn ch ...

  3. Android 访问Android Wear数据层Api——同步Data Items

    Data Items它被用来同步手机和wear数据接口,一个Date Items通常包含以下几个部分: Payload 字节数组.无论你需要设置数据类型,我们同意对象序列化和反序列化,大小不能超过10 ...

  4. Jquery 对话框确认

    $("#aa").click(function(){ if(confirm("是否继续")){ $(#aa).fadeOut(500); } })

  5. 去掉word中向下的箭头^l----->^p

    去掉word中向下的箭头 在网页上复制文章到word中,会发现有很多向下的箭头,这些 符号叫做软回车符.如何去掉这些向下的箭头呢.步骤如下: 方法/步骤 按Ctrl+H,弹出全局替换窗口,输入查找内容 ...

  6. C++头文件保护符和变量的声明定义

    1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...

  7. tarjan+缩点

    B - Popular Cows Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Su ...

  8. Sql还原数据库出现3154错误

    要先知道还原的数据库的名字 然后在数据库中新建一个那个名字的数据库, his 是数据库的名字!! RESTORE DATABASE his FROM DISK = 'E:\RDHL文件\HIS相关文档 ...

  9. vim ---- 自己主动的按钮indent该命令

    当使用vim一段代码的副本到一个程序时,有,经常indent会有一些问题. . 下面的这个强大的命令,使您可以一键码具有很好的格式. gg=G 样品:         

  10. C. Captain Marmot (Codeforces Round #271)

    C. Captain Marmot time limit per test 1 second memory limit per test 256 megabytes input standard in ...