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)
宏 | 描写叙述 |
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)的更多相关文章
- cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建
一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...
- android cocos2d-x for Android安装和学习笔记(请用adt-bundle21.1或以上导入)
引用:http://weimingtom.iteye.com/blog/1483566 (20121108)注意:这篇文章用cdt编译ndk工程的内容已过时(现在可以用adt-bundle,避免配置繁 ...
- [Cocos2d-x for WP8学习笔记] HelloWorld结构分析
先来看一下目录结构: Assets:游戏资源文件,图片音频等,Resource文件夹也有类似功能 include:用于放置游戏头文件 Shaders:渲染器着色器文件(大雾) cocos2dorig. ...
- cocos2d-x实战 C++卷 学习笔记--第4章 字符串 __String类
前言: <cocos2d-x实战C++卷>学习笔记.(cocos2d-x 是3.0版本) 介绍 cocos2d-x 通用的字符串类 __String . 使用cocos2d::__Str ...
- Cocos2d-x学习笔记(17)(TestCpp源代码分析-1)
TestCpp源代码基于Cocos2d-x2.1.3版本号,部分资源来自红孩儿的游戏编程之路CSDN博客地址http://blog.csdn.net/honghaier/article/details ...
- 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴
上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...
- 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音
<Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...
- cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug
cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug http://blog.csdn.net/allenice1/article/details/ ...
- 【cocos2d-x 3.x 学习笔记】对象内存管理
内存管理 内存管理一直是一个不易处理的问题.开发人员必须考虑分配回收的方式和时机,针对堆和栈做不同的优化处理,等等.内存管理的核心是动态分配的对象必须保证在使用完成后有效地释放内存,即管理对象的生命周 ...
- Cocos2d-x 学习笔记(20) ControlButton
[Cocos2d-x 学习笔记 目录链接] 1. 简介 ControlButton实现了按钮功能,根据触摸的位置和移动的过程可识别9中EventType类型,执行对应的回调函数. 直接继承了Contr ...
随机推荐
- JAVA程序猿怎么才干高速查找到学习资料?
JAVA程序猿怎么才干高速查找到学习资料? JAVA学习资料在互联网上较为零散,并且大多是英文的.以下介绍3种方式,让程序猿能够高速地找到自己想要的资料. 一.导航站点: 有非常多类似hao123的站 ...
- CRT远程连接server字符输出乱码解决一例
CRT远程连接server字符输出乱码解决一例 环境: server:Centos 6.2 远端:win 7 CRT版本号:7.1.1 现象回想: 1.server端:中文字符显示正常,例如以下: 2 ...
- ini文件解析c库(iniparser)
一.交叉编译ini解析库 1.官方网站http://ndevilla.free.fr/iniparser 下载iniparser-3.1.tar.gz 2.解压 tar -zxvf iniparser ...
- ZCTF-Restaurant-Pwn500
版权声明:本文为博主原创文章,未经博主允许不得转载. 这道压轴的题也是名副其实,很有分量.这也是自己第二次做C++类型的PWN.含有两个漏洞,缺一不可,一个漏洞将指定位置覆盖为对象虚表的地址,另外一个 ...
- ibatis中的resultClass,parameterClass,resultMap,resultType的使用与区别
parameterClass 是参数类.指定了参数的完整类名(包括包路径).可通过别名避免每次重复书写冗长的类名. resultClass 是结果类, 二.resultClass取值 1.result ...
- Tree( 树) 组件[2]
本节课重点了解 EasyUI 中 Tree(树)组件的使用方法, 这个组件依赖于 Draggable(拖动)和 Droppable(放置)组件.一. 异步加载如果想从数据库里获取导航内容, 那么就必须 ...
- JavaScript“闭包”精解
一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. 详细了解 Javascript语言的特殊之处,就在于函数内部可以直接读 ...
- hadoop mapreduce 端参数优化
在MapReduce执行过程中,特别是Shuffle阶段,尽量使用内存缓冲区存储数据,减少磁盘溢写次数:同时在作业执行过程中增加并行度,都能够显著提高系统性能,这也是配置优化的一个重要依据. 下面分别 ...
- xode 中文乱码处理
find *.* -exec sh -c "iconv -f GB18030 -t UTF-8 {} > {}.txt" \;
- 简单实用 “易忘” 的SQL 语句语法,新老皆宜
--创建数据库 create database 数据库名 on primary ( name='数据库名_data', filename='数据库储存路径', size=数据库初始大小(MB), ...