最近心血来潮,看到官方推荐的源码中有一款还不错的《超级马里奥》的源码,于是就下下来学习一下。
这里说明一下,我此次的重新,基本上是仿照这个源码写的,不同的是,在学习其同时,我加入了一点自己的东西。 这里给上原源码连接: http://cn.cocos2d-x.org/tutorial/show?id=2053
因为我准备重写这个游戏,所以这里我会重新创建一个项目一切从头开始
我不喜欢写配置开发环境,因为这对于一个程序员来说是基础中的基础。所以,开发环境的东西请自行搞定。
我们首先创建一个项目叫做SuperMarioDemo,创建完成之后如图:
上面是创建完项目用VS打开的项目代码。对于原项目我删去HelloWorldScene.h和HelloWorldScene.cpp两个文件。然后对AppDelegate.h和AppDelegate.cpp做了如下修改:
AppDelegate.h
/** * 项目的入口类的声明 */#ifndef _APP_DELEGATE_H_#define _APP_DELEGATE_H_#include "cocos2d.h"USING_NS_CC;/** * 创建app的入口类继承自cocos2dx的Application类 */class AppDelegate : private Application{public: /** * 构造函数 */ AppDelegate(); /** * 析构函数 */ virtual ~AppDelegate(); /** * app加载完成函数 */ virtual bool applicationDIDFinishLaunching(); /** * app进入后台运行函数 */ virtual voID applicationDIDEnterBackground(); /** * app从后台被唤醒的函数 */ virtual voID applicationWillEnterForeground();};#endif
AppDelegate.cpp
/** * 游戏入口类的实现 */#include "AppDelegate.h"#include "SimpleAudioEngine.h"using namespace CocosDenshion;/** * 构造函数,构造AppDelegate */AppDelegate::AppDelegate() {}/** * 析构函数,回收或者回收前的最后一次 *** 作 */AppDelegate::~AppDelegate() {}/** * 主程序加载完成 */bool AppDelegate::applicationDIDFinishLaunching() { //创建一个单例导演 Director *director = Director::getInstance(); //通过导演获取一个OpenGL坐标系视图 auto glvIEw = director->getopenGLVIEw(); //如果没有获取到 if(!glvIEw) { //创建一个名叫“超级玛丽”的窗口 glvIEw = GLVIEw::create("超级玛丽"); //设置窗口为当期OpenGL坐标系视图 director->setopenGLVIEw(glvIEw); } //默认显示帧率 director->setdisplayStats(true); //默认设置每秒60帧 director->setAnimationInterval(1.0 / 60); //这里是用于显示我们定义的场景 //auto scene = HelloWorld::createScene(); //运行这个场景 // director->runWithScene(scene); //因为函数是需要返回一个bool类型的返回值的,这里返回true return true;}/** * 当游戏被中断(比如打电话进来了)时自动响应的方法 */voID AppDelegate::applicationDIDEnterBackground() { //暂停背景音乐播放 SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); //停止动作 Director::getInstance()->stopAnimation();}/** * 游戏被重新唤起时调用的方法 */voID AppDelegate::applicationWillEnterForeground() { //重新开启动作 Director::getInstance()->startAnimation(); //继续播放背景音乐 SimpleAudioEngine::getInstance()->resumeBackgroundMusic();}
如此,我得到的界面是这样的:
当然,不用着急,因为里面还什么都没做,细心的看会发现
这几行已经被注释了,因为我还没有部署界面和场景,所以程序给的就是一个黑色的界面。
效果是这样的就没错了,这里我需要对C++和Cocos2dx的一些东西解释一下。
第一,在程序中.h文件的前面2行和最后一行的#ifndef...#define..#endif宏的作用是防止文件被多次引用,即如果项目中有多个.h文件的ifndef后面的大写(一般大写)名称一样的话除了创建的第一个.h文件里面的声明是可用的外,其他都无效,所以在使用的时候应避免重复。
第二,USING_NS_CC;此句同 using namespace cocos2d; 即使用cocos2dx的命名空间,使用了词句之后在后面的程序中如果遇到cocos2dx里面封装的类的时候可以不必使用cocos2d::封装类。如原代码中的class AppDelegate : private cocos2d::Application 在使用了命名空间之后可以直接写成class AppDelegate : private Application。
第三,音乐类 (SimpleAudioEngine)的使用要注意加入两个的东西。#include "SimpleAudioEngine.h"和using namespace CocosDenshion;否则报错
至此,我们的新建的原项目已经基本改完,下面一篇我将在里面再加入一些一套资源的自适应代码。然后加入第一个界面的内容。 总结
以上是内存溢出为你收集整理的Cocos2dx 3.0 实战之—— 重写《超级马里奥》其一对新建项目的一些修改全部内容,希望文章能够帮你解决Cocos2dx 3.0 实战之—— 重写《超级马里奥》其一对新建项目的一些修改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)