zoukankan      html  css  js  c++  java
  • ios游戏开发--cocos2d学习(1)

    学习cocos2d需要一定的编程基础,最好了解objective-c的语法。至于下载和安装的过程网上有很多,这里不多介绍,直接进入项目的学习。

    创建一个cocos2d项目,直接运行,效果如图:

    ios游戏开发--cocos2d学习(1)

    左下角显示当前的帧率,即每秒的帧数,更新屏幕的频率。

    ---------------------------------------------------------------------------------------------------------------
    有几个概念必须要理解:

    1.导演类:CCDirector,所有类的父类,控制整个游戏项目的运行,包括场景、人物等的显示.

    2.层和布景:CCLayer和CCScene,都继承自CCNode节点类。CCScene类似于现实生活中的场景,在这个场景中又可以铺垫其他的事件,如一个舞台是一个场景,在这个场景中可以上演话剧、小品、唱歌等各种节目,那么这节目可以看作是一个CCLayer,我可以创建唱歌层:SingCCLayer,让它继承CCLayer,然后添加元素,就是演员。一个节点CCNode即是一个可视化的元素,如可以创建一个CCLabelTTF标签,放入CCLayer中,或者按钮等,丰富自定义的场景布局。

    -------------------------------------------------------------------------------------------

    --基础代码讲解--

    (1)打开HelloWorldLayer.h头文件,你可以看到HelloWorldLayer类是继承自 CCLayer类的。 

    CCScene只是一个抽象的概念,默认的设置场景的方法是在你的类里面使用 一个静态初始化方法(static initializer)+(id) scene。此方法会生成一 个CCScene对象,并且将当前自定义层(这里指的是HelloWorldLayer)的对象添加到场景节点中。几乎在任何情况 下,CCScene都是在这里创建和使用的。以下是一个通用的+(id) scene方法: 

    +(CCScene *) scene

    {

    // 创建一个场景,注意场景Scene和层Layer以及各个元素都是CCNode的子类,创建对象时均可用类方法:node

    CCScene *scene = [CCScene node];

     

    // 创建一个本类的一个对象

    HelloWorldLayer *layer = [HelloWorldLayer node];

     

    // 在场景中添加自定义层

    [scene addChild: layer];

     

    // return the scene

    return scene;

    }

    (2)之后就是层Layer的初始化并显示在场景中,跟OC中一样,使用-(id)init方法:

    -(id) init

    {

    if( (self=[super init]) ) {

    // 生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种

    CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64];


    // 从当前CCDirector得到当前屏幕的尺寸

    CGSize size = [[CCDirector sharedDirector] winSize];

     

    // 将标签定位在屏幕中央

    label.positionccp( size.width /2 , size.height/2 );

     

    // 将标签添加到视图层中

    [self addChild: label];

    ................//还有很多其他内容,先不管它

    return self;

    }

     
    (3)下面在init方法中做一点小小修改,让它感觉起来是我们动手做过的小程序,而不是一个死的模板。

    首先,在init方法中做两处修改:一是启用触摸输入,二是设置一个以后可以用来调用对象的标记:tag。在列表2-3中标出了这两处修改:

     -(id) init

    {

    if( (self=[super init]) ) {

    // 生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种

    CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64];


    // 从当前CCDirector得到当前屏幕的尺寸

    CGSize size = [[CCDirector sharedDirectorwinSize];

     

    // 将标签定位在屏幕中央

    label.position =  ccp( size.width /2 , size.height/2 );

     

    // 将标签添加到视图层中

    [self addChild: label];

     

    //添加标签tag

    label.tag=10;//可以用任何数字,但建议用常量

    //启动可触摸模式

    self.isTouchEnabled=YES;//这样,点击屏幕,相关触摸函数才会响应触摸

    ................//还有很多其他内容,先不管它

    return self;

    }


    (4)响应触摸的函数

     

    -(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

        //CCLabelTTF *label=(CCLabelTTF *)[self getChildByTag:10];

       CCNode *node=[self getChildByTag:10];

        //验证返回的节点是CCLabelTTF类的对象

        NSAssert([node isKindOfClass:[CCLabelTTF class]], @"node is not a CCLabelTTF!");

       CCLabelTTF *label=(CCLabelTTF *)node;

       label.scale=CCRANDOM_0_1();//我们使用了cocos2d 的CCRANDOM_0_1()宏来改变标签的大小属性,使它在0和1之间变化。每次你点 击屏幕都会让标签尺寸发生变化.

     

     

  • 相关阅读:
    二叉树的镜像(剑指offer-18)
    树的子结构(剑指offer-17)
    合并两个有序链表(剑指offer-16)
    OutOfMemory相关问题(内存溢出异常OOM)
    Java内存区域
    招银网络(一面06.29)
    反转链表(剑指offer-15)
    链表中倒数第k个节点(剑指offer-14)
    调整数组顺序使奇数位于偶数前面(剑指offer-13)
    数值的整数次方(剑指offer-12)
  • 原文地址:https://www.cnblogs.com/gl5773477/p/3971146.html
Copyright © 2011-2022 走看看