Cocos2dx开发(4)——Windows环境创建Cocod2dx 3.2第一个项目HelloWorld
本文内容:cocos2dx+VS2013环境下创建项目,部分代码简析。会的朋友可以略过。
前面简单安装了几个环境,程序完全可以顺利跑起来(其他的cocos-stadio这些需要用到再装)
1、命令行形式创建自定义项目
打开cocos2d根目录,运行一次 download-deps.py 和 setup.py(如果之前运行过可以直接开始新建项目)
3.2版本好像又回到用命令的形式,也不麻烦所以笔者也没再去找别的方法创建项目。
这里主要看一下了解两个命令,分别输入看一下他们有哪些参数
cocos 和cocos new

cocos new 项目名 –p 包名 –l cpp –d路径
正式开始:在cocos根目录shift打开命令窗口:
cocos new FirstDemo -p com.huoit.FirstDemo -l cpp -d F:\CocosDemo 回车
有的朋友可能想到了用批处理新建项目,不复杂,直接引用一下网友写好的,保存为.bat文件下次直接运行就可以
@echo off
echo =============Cocos2D-x新建项目==============
set /p name=输入项目的名称: echo 项目名为: %name% echo 正在创建新项目... set pack=com.richard. cocos new %name% -p %pack%%name% -l cpp -d F:\Cocos2dDemo echo 创建完成.
pause
这里笔者生成项目FirstDemo
2、项目目录
创建完成后打开对应项目目录下的解决方案 FirstDemo\proj.win32\FirstDemo.sln。如下文件结构

打开win32看到main.cpp\main.h程序入口,Classes文件夹里定义了AppDelegate和HelloWorldScene
3、HelloWorld
继续说之前,先了解下导演、场景、层、精灵的概念
导演是一个游戏流程的操控者,往下一个游戏可以划分为不同的场景,一个场景又可以分为不同的层,一个层又可以拥有任意个可见的游戏节点(即对象,游戏中基本上所有的类都派生于节点类Node)。可以执行Action来修改游戏节点的属性,使其移动、旋转、放大、缩小等等。

①:main.cpp入口,程序走起
AppDelegate app;//继承自Application
return Application::getInstance()->run();//运行
②:AppDelegate.h看到引入的命名空间和宏,构造函数析构函数,这里主要看三个函数代表着程序的生命周期,第一个是加载时候初始化导演场景这些,后面两个分别是程序后台和后台回到前台的函数(如下),源代码里的注释其实也很清晰,可以自行查看
/**
加载初始化
*/
virtual bool applicationDidFinishLaunching(); /**
前台到后台运行
*/
virtual void applicationDidEnterBackground(); /**
后台到前台运行
*/
virtual void applicationWillEnterForeground();
对应cpp里的实现,主要就干这几件事
加载:初始化Director,GLView,设置FPS。初始化场景,运行;
后台:Director调用stopAnimation
前台:Director调用startAnimation
③:HelloWorld,看到它继承Layer
class HelloWorld : public cocos2d::Layer
{
public:
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene(); // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init(); // a selector callback
void menuCloseCallback(cocos2d::Ref* pSender); // implement the "static create()" method manually
CREATE_FUNC(HelloWorld);
};
HelloWorldScene.h
前面声明一个Scene,初始化init(),和一个调度方法。这里主要说一个CREATE_FUNC(HelloWorld);
怎么理解呢,这个宏的定义有点类似于C#里面的泛型,create()对应类型的一个实例。
cpp:
auto关键字有点类似于C#的var,但是应该也是要明确等号右边对象类型
Director::getInstance()->getVisibleSize();获取可视的大小
Director::getInstance()->getVisibleOrigin();获取坐标起点
setPosition设置位置
addChild(对象,z轴位置):回想上面的树结构,就是将下层的对象放入到父对象容器里(精灵加入layer,layer加入场景)
cpp里的实现注释很详细,不再多废话了,这里仅仅是一个摘要式的笔记,还有多看看官方的文档和代码
还有要说的就是从简单的HelloWorld看到3.2里面的小变化,就是对cocos2d命名空间下的类重新进行了封装,看到之前版本的CC_BREAK_IF这些都看不到了,仅从书写简洁了些许
Cocos2dx开发(4)——Windows环境创建Cocod2dx 3.2第一个项目HelloWorld的更多相关文章
- 【数据库开发】windows环境下通过c++使用redis
1.Windows下Redis的安装使用 Redis是一个key-value存储系统.Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起 ...
- windows环境隐藏命令行窗口运行Flask项目
Linux下可以使用nohub来使Flask项目在后台运行,而windows环境下没有nohub命令,如何让Flask项目在windows中在后台运行而不显示命令行窗口呢? 1.写一个.bat脚本来启 ...
- django创建第一个项目helloworld
环境:centos 7,已安装python 3.6环境 1.安装django并创建django第一个项目 1.1.使用pip安装django# pip install Django或指定安装版本# p ...
- 如何快速在windows上创建你的第一个odoo项目
一.什么是Odoo Odoo 是一系列开源商业应用程序套装(ERP企业管理系统),此套装可满足贵公司的一切应用需求,例如,企业基本的进销存.采购.销售.MRP生产制造.品保质量保障.企业招聘.员工合同 ...
- https://www.cnblogs.com/beileixinqing/p/7724779.html vue-cli生成的项目配置开发和生产环境不同的接口 vue-cli生成的项目,vue项目配置了不同开发环境的接口地址,axios.defaults.baseURL如何引用这个地址,这是在我发布项目的时候考虑的,于是想到了
方法二:(集热心网友提供的方案) 一般项目webpack会有两个或多个配置文件,如: webpack.prod.conf.js 对应线上打包 webpack.dev.conf.js 对应开发环境 使用 ...
- 在 windows 环境下安装 redislive
这是一篇在 windows 环境下安装 redislive 的教程! 项目地址:https://github.com/nkrode/RedisLive 配置文档:http://www.nkrode.c ...
- windows环境下搭建Cocos2d-X开发环境
最近终于有时间可心搞搞自己的东西了,呵呵,那就开始做个手机小游戏给孩子玩吧. 首先必须选定开发的框架,移动终端开源的游戏框架貌似不多,找来找去也就这个了,名字简单Cocos2d-X,是Cocos2d国 ...
- cocos2d-x -3.81+win7+vs2013开发环境创建新的项目
cocos2d-x -3.81+win7+vs2013开发环境创建新的项目 1.准备阶段 (1) vs2013下载及安装 (2)cocos2d-x 3.8.1下载及解压 (3)python下载及安装( ...
- [01] cocos2d-x开发环境搭建
cocos2d-x 是跨平台的游戏开发引擎,支持的平台有 ios , android , windows phone , web , tizen,windows等. 先来搭建开发环境,一般我们开发游戏 ...
随机推荐
- sql日志框架log4jdbc的AOP式使用
log4jdbc.log4j2 参考:1. http://badqiu.iteye.com/blog/743100 2. https://code.google.com/p/log4jdbc/ 3 ...
- Python运行机制
闲来无事,简单画了一下Python的运行机制,纯属娱乐:
- Junit 断言 assertThat Hamcrest匹配器
junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...
- hibernate性能消耗太狠了。果断减肥引发的连串意外惊喜
近期在云服务器上新部署了一个项目 硬件配置 CPU: 2核 内存: 4096 MB (I/O优化) 开始是调试测试在用 没发觉,今天我看了下监控 cpu使用率达到了60-70% 而且一直持续 我 ...
- mvc分层的原理
首先这是现在最基本的分层方式,结合了SSH架构.1.modle层就是对应的数据库表的实体类.2.Dao层是使用了hibernate连接数据库.操作数据库(增删改查).3.Service层:引用对应的D ...
- 通过DAC来连接SQL Server
最早知道能够使用专用管理员连接.来连接到sql server.可是一直没有成功连接过.今天又看到这个,于是想再试试. 1.通过在ssms中的"连接到server对话框"中的serv ...
- 蜗牛—JSP学习之JavaBean初识
初识: <%@ page language="java" import="java.util.*" pageEncoding="utf-8&qu ...
- poj 1149 Pigs 网络流-最大流 建图的题目(明天更新)-已更新
题目大意:是有M个猪圈,N个顾客,顾客要买猪,神奇的是顾客有一些猪圈的钥匙而主人MIRKO却没有钥匙,多么神奇?顾客可以在打开的猪圈购买任意数量的猪,只要猪圈里有足够数量的猪.而且当顾客打开猪圈后mi ...
- C#调用java接口报“Fault occurred while processing”异常问题
服务在通常项目中总是要用到的C#的webservice.wcf,还有第三方的,比如java服务.一般来说调用都不会有什么问题,因为服务的标准都是一样的.要注意的就是:1.参数个数匹配:2.参数类型和返 ...
- linux进程间通讯-System V IPC 信号量
进程间通信的机制--信号量.注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物.有关信号的很多其它内容,能够阅读我的还有一篇文章:Linux进程间通信--使用信号.以下就进入信号量的 ...