cocos2d-x简易笔记1-hello world

cocos2d-x简易笔记1-hello world

要跑一个简单的cocos2d-x挺简单的,一上来就纠结各种平台的迁移开发太辛苦了,所以我先把程序hello world
跑起来,以最简单的win32平台为主学习cocos2d-x的API。

依赖包

  • python 2.7以上版本

    我的电脑→右键→属性→高级→环境变量→系统变量→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"。常见原因

  1. AppDelegate中没有使用MyScene创建Scene
  2. MyScene类中没有实现CREATE_FUNC(MyScene)宏。
  3. 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

posted on 2014-10-23 16:07  stevwang  阅读(180)  评论(0)    收藏  举报

导航