设为首页 加入收藏

TOP

零基础学cocos2dx 3.0(顺带学C++)第一篇 切换场景(一)
2015-07-24 05:43:58 来源: 作者: 【 】 浏览:18
Tags:基础 cocos2dx 3.0 顺带 第一篇 切换 场景

不会去重复一些概念性的东西,具体的内容,我在代码中已经备注出来。先看目录,这个创建完项目目录的Classes文件夹下有4个文件,我把helloworld那两个文件直接改了名字,这里我叫MainScene 。切记,在改为名字之后需要到appDelegate.pp里面把对应的helloworld改过来。

\

废话不多说,直接上代码

1,appDelegate.h

#ifndef  _APP_DELEGATE_H_
#define  _APP_DELEGATE_H_

#include "cocos2d.h"

/**
 * cocos2d 应用入口类
 * 官方解释这里使用私有继承的原因是隐藏了一些导演类的接口
 * C++ 不是很懂,后期再好好研究下
 */
class  AppDelegate : private cocos2d::Application
{
public:
	//构造函数,构造一个AppDelegate
    AppDelegate();
	//析构函数,用于回收垃圾,释放空间,这里是虚函数,建议包括本人在内的new C++er好好补习下C++基础
	//这里找到资料为:C++通过虚函数实现多态."无论发送消息的对象属于什么类,它们均发送具有同一形式的消息,对消息的处理方式可能随接手消息的对象而变"的处理方式被称为多态性。
    virtual ~AppDelegate();

    /**
     * 主程序的入口方法,在这里对导演和场景的初始化
	 @return true   初始化 success, 应用 continue.
	 @return false   初始化 failed, 应用 terminate.
     */
    virtual bool applicationDidFinishLaunching();

    /**
     * 程序转入背景运行函数
     */
    virtual void applicationDidEnterBackground();

    /**
     * 程序恢复运行函数
     */
    virtual void applicationWillEnterForeground();
};

#endif // _APP_DELEGATE_H_

2,appDelegate.cpp


#include "AppDelegate.h"
#include "MainScene.h" //这里原本是HelloWorldScene,我换了名字
//使用cocos2dx的命名空间,如果不使用的话,貌似有些cocos的字段显示无法识别
USING_NS_CC;
//构建入口类
AppDelegate::AppDelegate() {

}
//析构函数,用于垃圾回收
AppDelegate::~AppDelegate() 
{
}
//启动程序入口
bool AppDelegate::applicationDidFinishLaunching() {
    // 初始化导演类
    auto director = Director::getInstance();
	//通过导演类获取一个OpenGL坐标系
    auto glview = director->getOpenGLView();
	//如果没有获取到,创建一个坐标系界面,命名为Cocos2dxSceneShow
    if(!glview) {
        glview = GLView::create("Cocos2dxSceneShow");
        director->setOpenGLView(glview);
    }

    // 打开显示帧率
    director->setDisplayStats(true);

    // 设置默认帧率为1.0/60,即每秒60帧
    director->setAnimationInterval(1.0 / 60);

    // 创建一个允许被释放的场景MainScene
	auto scene = MainScene::scene();

    // 入口,运行这个MainScene场景
    director->runWithScene(scene);

    return true;
}

// 暂停应用的时候调用。比如来了电话
void AppDelegate::applicationDidEnterBackground() {
    Director::getInstance()->stopAnimation();

    // 如果用了音乐等 SimpleAudioEngine, 这里需要加上
    // SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
}

// 重新唤醒游戏调用
void AppDelegate::applicationWillEnterForeground() {
    Director::getInstance()->startAnimation();

    // 如果用了音乐等 这里需加上
    // SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}

3,MainScene.h(helloworld那个类)


#ifndef __MainScene_H__
#define __MainScene_H__

#include "cocos2d.h"
//创建一个MainScene类继承自cocos2d的Layer类
class MainScene : public cocos2d::Layer
{
public:
	//初始化函数,我用来定义组件
	virtual bool init();
	//创建一个场景
	static cocos2d::Scene* scene();
	//转场第一个界面
	void onPushSceneOne(Ref* pSender);
	//转场第二个界面
	void onPushSceneTwo(Ref* pSender);
	//关闭方法
	void menuCloseCallback(Ref* pSender);
	//创建场景宏
	CREATE_FUNC(MainScene);
};
#endif // __HELLOWORLD_SCENE_H__

4,MainScene.cpp

//这个类开始在项目生成的时候是helloworld类,这里我改了一下
#include "MainScene.h"
//项目中调用了NewScene所以需要引用
#include "NewScene.h"
#include "GameScene.h"
USING_NS_CC;
//创建主场景
Scene* MainScene::scene()
{
	//使用场景类创建一个场景
	auto scene = Scene::create();
	//创建一个MainScene层
	MainScene *layer = MainScene::create();
	//把层添加到场景里面去
	scene->addChild(layer);
	// 返回一个场景
	return scene;
}

// 初始化一个MainScene层
bool MainScene::init()
{
	//层的初始化是否成功
	if (!Layer::init())
	{
		return false;
	}
	//获取坐标系界面的屏幕可见区域
	Size visibleSize = Dire
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇LeetCode之Decode Ways 下一篇自定义图文混排视图MyImageTextVi..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: