cocos2d-x简易笔记1-hello world
cocos2d-x简易笔记1-hello world
要跑一个简单的cocos2d-x挺简单的,一上来就纠结各种平台的迁移开发太辛苦了,所以我先把程序hello world
跑起来,以最简单的win32平台为主学习cocos2d-x的API。
依赖包
- python 2.7以上版本
- 下载msi版本
- windows设置环境变量:
我的电脑→右键→属性→高级→环境变量→系统变量→path→加入你的python安装目录。测试一下:进入cmd,输入python,不会提示“不是外部或内部命令balabala...”就OK。
- vs 2012或者2013
- VS添加classpath:项目->属性->C/C++->常规->附加包含目录->编辑添加;增加"$(ProjectDir)".
- 会C++
就这么多了。
cocos2d-x 工程创建
- 下载cocos2d-x: 2.25版本链接
- 解压cocos2d-x到
cocos2d-x-2.2.5目录下 - 创建cocos2d-x win32工程
- 切换到
cocos2d-x-2.2.5\tools\project-creator目录下,打开cmd,输入创建工程命令python create_project.py -project TestGame -package com.qingfeng.testgame -language cpp - 参数索命:project参数是工程名,package参数是包名,language参数是开发语言(cpp即C++)
![创建工程]()
- 在
cocos2d-x-2.2.5\projects目录下出现新工程TestGame。这就是工程目录。Classes是源代码文件,Resources是资源目录,其它以proj.开头的目录是各个平台相关的依赖文件。proj.win32是我们关心的目录
- 切换到
- 打开
proj.win32下的vs工程- 打开
TestGame.sln文件,目录结构:win32下是入口文件main.cpp;
![main]()
CCApplication::sharedApplication()->run()最终会执行Classes下的AppDelegate类中的applicationDidFinishLaunching ()方法。
![AppDelegate]()
- 其中的关键是
CCScene *pScene = HelloWorld::scene();创建了第一个场景。可以通过修改HelloWorld或者创建新的Scene类来替换它。
![result]()
- 打开
- 删除HelloWorld,来自己创建一个Scene类
- 创建新类
Myscene
![MyScene]()
- 继承
cocos2d::CCLayer后重写init()并添加静态scene()方法
- 创建新类
代码如下MyScene.h:
#pragma once
#include "cocos2d.h"
class MyScene : public cocos2d::CCLayer
{
public:
MyScene();
~MyScene();
virtual bool init();
static cocos2d::CCScene* scene();
CREATE_FUNC(MyScene);
};
MyScene.cpp
#include "MyScene.h"
using namespace cocos2d; // cocos2d作用域
MyScene::MyScene()
{
}
MyScene::~MyScene()
{
}
cocos2d::CCScene* MyScene::scene()
{
CCScene *scene = CCScene::create();
CCLayer *layer = MyScene::create();
scene->addChild(layer);
return scene;
}
bool MyScene::init()
{
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "arial", 24);
pLabel->setPosition(ccp(size.width / 2, size.height / 2));
this->addChild(pLabel);
return true;
}
- 最后修改
AppDelegate类中的CCScene替换为MyScene类
如下所示
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
CCDirector* pDirector = CCDirector::sharedDirector();
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
pDirector->setOpenGLView(pEGLView);
// turn on display FPS
pDirector->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
pDirector->setAnimationInterval(1.0 / 60);
// 替换HelloWorld为MyScene
CCScene *pScene = MyScene::scene();
// run
pDirector->runWithScene(pScene);
return true;
}
- 运行:选择工程右键->调试->启动新实例或者点击工具栏->本地Windows调试器,即可看到最后的结果。
![hello result]()
注:编写过程中可能编译通过,看不到"Hello World"。常见原因
- AppDelegate中没有使用MyScene创建Scene
- MyScene类中没有实现CREATE_FUNC(MyScene)宏。
MyScene::scene()方法中layer创建使用了基类CCLayer::create()而不是子类MyScene::create()。
cocos2d-x介绍
cocos2d-x是一个开源游戏框架,更是一个良好的生态环境。cocos2d拥有众多编辑工具和开源社区。cocos2d-x基于精灵来设计,精灵可以是一个2D图片个体,也可以是一个其它精灵的容器,通过定时器Timer和动作Action来组合。cocos2dx支持lua等脚本。cocos2x可以实现扩平台的开发和移植。
入门资料
1. Cocos2d-x游戏开发基础与实战
2. Cocos2d-x 2.23 API
3. Cocos2d-x wiki
4. Cocos2d-x docs






浙公网安备 33010602011771号