码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-23 12:54:45      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

主要内容:

一、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__
View Code

可以看到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 };
View Code

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 }
View Code

由于在AppDelegate.cpp启动程序.

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

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

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

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

技术分享

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

技术分享

 

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

标签:

原文地址:http://www.cnblogs.com/berthua/p/4523929.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!