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切换到新场景。

Cocos2d-x学习笔记(3)的更多相关文章

  1. cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建

    一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...

  2. android cocos2d-x for Android安装和学习笔记(请用adt-bundle21.1或以上导入)

    引用:http://weimingtom.iteye.com/blog/1483566 (20121108)注意:这篇文章用cdt编译ndk工程的内容已过时(现在可以用adt-bundle,避免配置繁 ...

  3. [Cocos2d-x for WP8学习笔记] HelloWorld结构分析

    先来看一下目录结构: Assets:游戏资源文件,图片音频等,Resource文件夹也有类似功能 include:用于放置游戏头文件 Shaders:渲染器着色器文件(大雾) cocos2dorig. ...

  4. cocos2d-x实战 C++卷 学习笔记--第4章 字符串 __String类

    前言: <cocos2d-x实战C++卷>学习笔记.(cocos2d-x 是3.0版本) 介绍 cocos2d-x 通用的字符串类  __String . 使用cocos2d::__Str ...

  5. Cocos2d-x学习笔记(17)(TestCpp源代码分析-1)

    TestCpp源代码基于Cocos2d-x2.1.3版本号,部分资源来自红孩儿的游戏编程之路CSDN博客地址http://blog.csdn.net/honghaier/article/details ...

  6. 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴

    上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...

  7. 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

    <Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...

  8. cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug

    cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug http://blog.csdn.net/allenice1/article/details/ ...

  9. 【cocos2d-x 3.x 学习笔记】对象内存管理

    内存管理 内存管理一直是一个不易处理的问题.开发人员必须考虑分配回收的方式和时机,针对堆和栈做不同的优化处理,等等.内存管理的核心是动态分配的对象必须保证在使用完成后有效地释放内存,即管理对象的生命周 ...

  10. ‎Cocos2d-x 学习笔记(20) ControlButton

    [Cocos2d-x 学习笔记 目录链接] 1. 简介 ControlButton实现了按钮功能,根据触摸的位置和移动的过程可识别9中EventType类型,执行对应的回调函数. 直接继承了Contr ...

随机推荐

  1. [React Testing] Element types with Shallow Rendering

    When you render a component with the Shallow Renderer, you have access to the underlying object. We ...

  2. I/O输出端口照明LED

    方案特点:I/O输出端口照明LED.而区间0.2秒闪烁!(非计时器延迟) (P1.0销被连接到LED) LED EQU P1.0 ;宏定义 ORG 0000H LJMP MAIN ORG 0200H ...

  3. mysql中DES加密解密

      DES_DECRYPT(crypt_str[,key_str]) 使用DES_ENCRYPT()加密一个字符串.若出现错误,这个函数会返回 NULL. 注意,这个函数只有当MySQL在SSL 的支 ...

  4. Electron开发环境部署

    Electron开发环境部署 安装node.js 可以从node.js官方网站上获取安装包,并进行安装,安装完可以通过 ndoe -v 指令进行版本查看. 本文的开发环境为node.js 4.4.5. ...

  5. java listener实现定时任务

    使用java ServletContextListener 实现各种简单定时任务. 1. 创建ServletContextListener,在3.0版本的web.xml中不再需要添加listener的 ...

  6. php 邮件发送代码-php邮件群发

    php 邮件发送如何进行的呢? php邮件发送是通过smtp协议进行的. 下面是一个php邮件发送的类的一个函数. 文件下载 function sendmail($to, $from, $subjec ...

  7. [Leetcode][048] Rotate Image 略详细 (Java)

    题目在这里 https://leetcode.com/problems/rotate-image/ [个人分析] 这个题目,我觉得就是考察基本功.考察细心的,算法方面没有太多东西,但是对于坐标的使用有 ...

  8. MySQL历史版本下载(官方)

    http://downloads.mysql.com/archives/community/ 社区版本(开源免费)

  9. OOP(面向对象编程)的一些特性

    接口:接口是把公共实例(非静态)方法和属性结合起来,以封装特定功能的一个集合.一旦定义了接口,就可以在类中实现它.接口注意事项:接口不能单独存在.不能像实例化一个类那样实例化接口.另外,接口不能包含实 ...

  10. 基于AForge.Net框架的扑克牌识别

    原文:基于AForge.Net框架的扑克牌识别 © 版权所有 野比 2012 原文地址:点击查看 作者:Nazmi Altun Nazmi Altun著,野比 译  下载源代码 - 148.61 KB ...