• Cocos2d-x学习笔记(3)


            Cocos2d-x有一个包括全部其它头文件的cocos2d.h,仅仅要在使用时包括这个头文件,就能够使用引擎的全部功能。Cocos2d-x的类都放置于cocos2d的命名空间下,如引擎下的“actions/CCAction.h”中在文件首尾使用NC_CC_BEGIN和NS_CC_END来将全部类型包括在cocos2d命名空间下。在游戏中使用#define USING_NS_CC using namespace cocos2d定义的宏USING_NS_CC来说明命名空间。

            1、构造函数与初始化

            Cocos2d-x不使用传统的值类型,全部的对象都创建在堆上,然后通过指针引用,创建Cocos2d-x对象主要有两种方法:(1)使用new创造未初始化的对象,然后调用init系列方法来初始化。(2)使用静态的工厂方法直接创建一个对象。

            第一种方法:

           (1)使用new操作符调用构造函数,创建一个没有初始化的空对象

           (2)选择合适的初始化方法,并调用它来初始化对象

            Cocos2d-x的初始化方法都以init()作为前缀,返回一个bool值,代表是否成功。比如:

            CCSprite* sprite1 = new CCSprite();

            sprite1->initWithFile(“HelloWorld.png”);

            CCSprite共提供8个初始化方法。

           另外一种方法

           (1)静态project方法是类提供的静态函数,仅仅要提供必要的參数,就会返回一个完毕了初始化的对象,通常init系列的初始化方法都会有相应的工厂方法。比如:

            CCSprite* sprite2 = CCSprite::spriteWithFile(“HelloWorld.png”);//Cocos2d-x 2.0曾经版本号中的方法

            CCSprite* sprite3 = CCSprite::create(“HelloWorld.png”);///Cocos2d-x 2.0之后版本号中的方法

            2、选择器

            选择器是类似于C++中的类函数指针的机制,以下是Cocos2d-x提供的创建选择器语法的宏,用来创建函数指针,这些宏仅仅有一个參数SELECTOR,表示被指向的类方法

            schedule_selector(SELECTOR)

            callfunc_selector(SELECTOR)

            callfuncN_selector(SELECTOR)

            callfuncND_selector(SELECTOR)

            menu_selector(SELECTOR)

            event_selector(SELECTOR)

            compare_selector(SELECTOR)

            3、属性:Cocos2d-x规定了属性訪问器的方法名称以get或set为前缀,后接属性名,如CCNode中节点标记属性Tag属性,訪问器分别为getTag()和setTag(int aTag)其原理例如以下:      

    int tag;
    int getTag() {return tag;}
    void setTag() {tag = aTag;}
            Cocos2d-x中与属性相关的宏共同拥有9个,仅仅须要把宏写在类的定义中就可以,每一个宏有3个參数:(1)varType,属性类型,假设属性类型时对象,须要写成指针的形式。(2)varName,属性的私有字段名称。(3)funName,属性的訪问器名称,也就是紧接在get或set后面的部分。如:CC_SYNTHESIZE(int,tag,Tag)

            

    Cocos2d-x与属性有关的宏
    描写叙述
    CC_PROPERTY 定义一个属性及其訪问器,没有实现,经常使用于简单的值类型
    CC_PROPERTY_READONLY 定义一个属性,仅仅包括get訪问器,没有实现
    CC_PROPERTY_PASS_BY_REF 定义一个属性,訪问器使用引用类型传递參数,没有实现,通经常使用于结构体
    CC_PROPERTY_READONLY_PASS_BY_REF 定义一个属性,仅仅包括get訪问器,且使用引用类型传递參数,没有实现。
    CC_SYNTHESIZE 同CC_PROPERTY,实现了訪问器方法
    CC_SYNTHESIZE_READONLY 同CC_PROPERTY_READONLY,实现了訪问器方法
    CC_SYNTHESIZE_READONLY_PASS_BY_REF 同CC_PROPERTY_READONLY_PASS_BY_REF,实现了訪问器方法
    CC_SYNTHESIZE_PASS_BY_REF 同CC_PROPERTY_PASS_BY_REF,实现了訪问器方法
    CC_SYNTHESIZE_RETAIN 同CC_PROPERTY,实现了訪问器方法。用于派生自CCObject的类型,
    訪问器採用Cocos2d-x的内存管理机制自己主动维护对象的引用计数。

            4、单例:Cocos2d-x的流程控制器CCDirector是一个独一无二的控制器,用于切换游戏的场景。这样的情况下使用单例的技巧。例如以下代码:

    static CCDisplayLinkDirector s_SharedDirector;
    CCDirector* CCDirector::sharedDirector(void)
    {
        static bool s_bFirstUseDirector = true;
        if(s_bFirstUseDirector)
        {
            s_bFirstUseDirector = false;
            s_bFirstUseDirector.init();
        }
        return &s_SharedDirector;
    }
    能够放心,CCDirector维护了一个静态的CCDirector实例,在第一次使用前初始化,为了訪问CCDirector控制器,使用例如以下代码:

    CCDirector::sharedDirector()->replaceScene(newScene);
    获取CCDirector的唯一实例,调用replaceScene切换到新场景。


  • 相关阅读:
    使用vue做项目时,刷新页面,原本应该隐藏的东西闪一下
    input type="file" 上传文件的一些使用
    vue强制重新渲染
    元素focus页面不滚动不定位的JS处理
    js使用案例
    js使用setInterval简单实现一个时钟
    js日期封装方法
    scss简单使用总结
    JavaScript的内置对象(Global对象)
    JavaScript—Date对象详情
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3819826.html
Copyright © 2020-2023  润新知