cocos2d-x学习笔记2——C++语法和场景

主要内容:

一、C++语法特点简介

二、第一个HelloWorld场景

三、新建一个场景

一、C++语法特点简介

1. 函数的声明和定义分开

例如AppDelegate.h中声明的函数都在AppDelegate.cpp中定义

TIPS:按F12直接跳到Definition

2. #include预编译

在需要调用其他类中的一些方法时,必须#include其头文件

比如这里如果不#include “HelloWorld.h”就无法调用HelloWorld::scene()这个方法。

3. using namespace 命名空间

在不同的命名空间里,有不同的方法,不同的类

4. ::双冒号用法

作用域的操作符

5. 析构函数

析构函数的作用和构造函数相反,在构造函数中,常做一些成员变量的初始化等。析构函数中对一些不需要的函数进行处理。

6. 指针

一种类型:指针类型,直接操作内存地址。

例如定义的导演是一个指针

7. :单冒号

在C++中特别的表示继承,共有或私有方法

二、第一个HelloWorld场景

 1 #ifndef __HELLOWORLD_SCENE_H__
 2 #define __HELLOWORLD_SCENE_H__
 3
 4 #include "cocos2d.h"
 5
 6 class HelloWorld : public cocos2d::CCLayer
 7 {
 8 public:
 9     // Here‘s a difference. Method ‘init‘ in cocos2d-x returns bool, instead of returning ‘id‘ in cocos2d-iphone
10     virtual bool init();
11
12     // there‘s no ‘id‘ in cpp, so we recommend returning the class instance pointer
13     static cocos2d::CCScene* scene();
14
15     // a selector callback
16     void menuCloseCallback(CCObject* pSender);
17
18     // implement the "static node()" method manually
19     CREATE_FUNC(HelloWorld);
20 };
21
22 #endif // __HELLOWORLD_SCENE_H__

可以看到HelloWorld类继承于CCLayer。

里面的3个方法分别表示初始化、场景、选择器的回调函数。

最后的CREATE_FUN()表示自动回收机制,如这里当HelloWorld不再使用的时候,就被自动回收释放。

在HelloWorldScene.cpp中对以上方法进行了定义。

三、新建一个场景

MyScene.h:

 1 #pragma once
 2 #include "cocos2d.h"
 3
 4 using namespace cocos2d;
 5
 6 class MyScene : public CCLayer
 7 {
 8 public:
 9     MyScene();
10     ~MyScene();
11     virtual bool init();
12     static CCScene* scene();
13     CREATE_FUNC(MyScene);
14 };

MyScene.cpp:

 1 #include "MyScene.h"
 2
 3
 4 MyScene::MyScene()
 5 {
 6 }
 7
 8
 9 MyScene::~MyScene()
10 {
11 }
12
13 CCScene* MyScene::scene()
14 {
15     // ‘scene‘ is an autorelease object
16     CCScene *scene = CCScene::create();
17
18     // ‘layer‘ is an autorelease object
19     MyScene *layer = MyScene::create();
20
21     // add layer as a child to scene
22     scene->addChild(layer);
23
24     // return the scene
25     return scene;
26 }
27
28 bool MyScene::init()
29 {
30     return true;
31 }

由于在AppDelegate.cpp启动程序.

所以,需要在AppDelegate.cpp中#include "MyScene.h".

但由于创建的类在项目一级目录下,而之前的HelloWorld.h和HelloWorld.cpp都在Classes文件夹下,这就需要一些调整。

在TestGame的project菜单下拉的属性里添加一级目录即可。

再对AppDelegate.cpp中的代码稍作修改:

接下里就可以看到一个全新的场景:

时间: 2024-08-10 10:17:15

cocos2d-x学习笔记2——C++语法和场景的相关文章

lua学习笔记之基本语法

Lua学习笔记之基本语法 1.  赋值语句 赋值是改变一个变量的值和改变表域的最基本的方法. a = "hello".."world" t.n = t.n+1 lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会一次赋给左边的变量. a,b = 10,2*x    <-->a = 10;b = 2*x 遇到赋值语句lua会先计算右边所有的值然后再执行赋值操纵,所以我们可以这样进行交换变量的值: x,y = y,x    

01-Python学习笔记-基础语法

Python标识符 -d           在解析时显示调试信息 -O           生成优化代码 ( .pyo 文件 ) -S           启动时不引入查找Python路径的位置 -v            输出Python版本号 -X           从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时. -c cmd     执行 Python 脚本,并将运行结果作为 cmd 字符串. file           在给定的python文件执行python脚本. P

lua学习笔记(1)-基本语法

==============变量类型nilnumber(实数)    1 2 3.14 7.65e8string            "hello world" "\n"boolean(true false)    true falsefunction*userdata and threadstable(1)默认key初始化t = {a, "hello", b, "world"} (2)自定义key初始化t = {n1 =

PHP:学习笔记(2)——基础语法

PHP:学习笔记(2)--基础语法 向屏幕输出 说明 1.void echo ( string $arg1 [, string $... ] ) 2.int print ( string $arg ) 注意: 1.echo.print 实际上不是一个函数(它是一个语言结构),因此你可以不必使用圆括号来括起它的参数列表. 2.输出变量的时候需要使用双引号! 3.int printf ( string $format [, mixed $args [, mixed $... ]] ) 4.strin

学习笔记之06-点语法

前言 在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法".比如: 1.在Student类的第2行定义了一个公共的成员变量age 1 public class Student { 2 public int age; 3 } 2.然后在第5行通过点语法直接给stu的成员变量age赋值 1 public class Test { 2 3 public static void main(String[] args) { 4 Stu

《Java程序员面试宝典》学习笔记(基本语法部分)

这是我学习欧立奇<Java程序员面试宝典>第三版的笔记.这篇是基本语法部分. ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 在Java中,字符只以一种形式存在,那就是Unicode.在JVM内部一切都由Unicode表示,而输出到外部后(JVM和OS的交界处就是各种输入/输出流)转换为其他形式的编码. Java用了中间缓存变量的机制,所以,j=j++可换成如下写法: te

golang学习笔记:golang 语法篇(二)

在语法篇(一)中学习了go中基本的数据类型.变量.常量等组成语言的基本要素,在这一节中将会学习如何将这些元素组织起来,最终写成可以执行的代码. 在这一部分包括: go中的流程控制语句: go中函数的用法: go特殊的错误处理方式: Golang中的流程控制语句 在具体编程的时候免不了需要使用一些特殊的语句实现某些功能,比如使用循环语句来进行迭代,使用选择语句控制程序的执行方式等.这些语句在任何一门程序设计语言 中都会有支持,golang中除了支持常用的循环,条件选择语句以外,还支持跳转语句,下面

Go语言学习笔记一(语法篇)

国庆节七天假期,这段时间刚好项目那边催的不是很紧,基本上每天都是白天重构一下项目代码,晚上自己学习.(大概是因为容总那边的人都去度假了把项目进度放慢了吧.这两天“彩虹”姐姐也来凑热闹,据说还是直接从澳门出发,然后漂洋过海到了咱们大广东,昨天还在顺德发了个大脾气.苦逼的咱们几个还是天天待在工作室发霉,因为害怕被彩虹姐姐带走,所以把工作室的门窗锁得紧紧的,然后把空调开到20多度,穿上外套,哈哈,这才叫个爽啊!).最近看到了一篇文章名曰<不要在一门技术上吊死> 深有感触,于是就开始着手学习久闻大名但

c++学习笔记(部分语法及c++11新特性)

前言 c++的语法细节实在过杂,再加上c++11的新特性,看了又忘,忘了再看,故讲学习过程所得以笔记形式记录于此. 1. c++对变量初始化的形式 int a = 0; int a = {0}; int a(0); int a{0};//叫做列表初始化 c++11时,才得以全面应用 long double b = 1.02; int a(b); int a=b; //正确:转换执行,但丢失了部分值 int a{b}; int a={b};//错误:转换未执行,因为存在丢失信息的危险 2. 变量声