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

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

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117069.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php中fread用法,php fread函数与fread函数用法_PHP教程

    php中fread用法,php fread函数与fread函数用法_PHP教程phpfread函数与fread函数用法php教程fread函数与fread函数用法/*fread语法:stringfread(resource$handle,int$length)fread()读取到的字节长度由处理引用的文件指针。读尽快停止对符合下列条件之一:已经读取的字节长度!eof(文件结束)达到一包可用网络(流)已阅读8192字节(打开后用户空间流)*///fread…

    2022年9月13日
    1
  • uboot下载

    uboot下载uboot下载地址ftp://ftp.denx.de/pub/u-boot/DNW源码及使用说明下载点击打开链接共分为三种方法:一、从SD卡启动通过wind把SD卡格式化为FAT32模式sudofdisk-l //查看分区信息ddiflag=dsyncoflag=dsyncif=./u-boot.binof=/dev/sdbseek=1启动时按下空格键…

    2022年6月29日
    24
  • ThinkPHP 验证码详解及实例

    ThinkPHP 验证码详解及实例

    2021年8月29日
    83
  • gtest宏列表_指定宏怎么用

    gtest宏列表_指定宏怎么用简介总结gtest中的所有断言相关的宏。gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是:ASSERT_*系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。EXPECT_*系列的断言,当检查点失败时,继续往下执行。布尔值检查FatalassertionNonfatalassertion…

    2022年9月29日
    0
  • 【阅读笔记】数据分析思维:分析方法和业务知识

    【阅读笔记】数据分析思维:分析方法和业务知识这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

    2022年6月7日
    93
  • 结合matlab代码案例解释ICA独立成分分析原理「建议收藏」

    结合matlab代码案例解释ICA独立成分分析原理「建议收藏」目录介绍什么是ICA?对数据进行白化ICA算法ICA特性本分享为脑机学习者Rose整理发表于公众号:脑机接口社区(微信号:Brain_Computer).QQ交流群:941473018关于ICA,可以查看Rose小哥之前分享的《ICA独立成分分析去除EEG伪影》以及Scott等大神关于ICA的原理与应用的文献汇总《Scott等大神的33篇ICA独立成分分析论文汇总》。介绍独立分量分析是一…

    2022年5月16日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号