Cocos2d-x学习笔记(3)
Jun 07, 2016 pm 03:01 PMCocos2d-x有一个包含所有其他头文件的cocos2d.h,只要在使用时包含这个头文件,就可以使用引擎的全部功能。Cocos2d-x的类都放置于cocos2d的命名空间下,如引擎下的“actions/CCAction.h”中在文件首尾使用NC_CC_BEGIN和NS_CC_END来将所有类型包含在cocos2d命
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)静态工程方法是类提供的静态函数,只要提供必要的参数,就会返回一个完成了初始化的对象,通常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;}
宏 | 描述 |
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::sharedDirector()->replaceScene(newScene);

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment supprimer les notes Xiaohongshu

Que dois-je faire si les notes que j'ai publiées sur Xiaohongshu sont manquantes ? Quelle est la raison pour laquelle les notes qu'il vient d'envoyer sont introuvables ?

Comment ajouter des liens de produits dans les notes dans Xiaohongshu Tutoriel sur l'ajout de liens de produits dans les notes dans Xiaohongshu

Apprenez à désinstaller complètement pip et à utiliser Python plus efficacement

Une plongée approfondie dans la palette de couleurs de matplotlib

Révéler l'attrait du langage C : découvrir le potentiel des programmeurs

Premiers pas avec Pygame : didacticiel complet d'installation et de configuration

Comment publier un tutoriel de notes sur Xiaohongshu ? Peut-il bloquer les gens en publiant des notes ?
