第一节:创建自己的每一个场景

前端之家收集整理的这篇文章主要介绍了第一节:创建自己的每一个场景前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我是在mac环境下,使用的是xcode写的,直接创建一个新的项目 ,然后,就包含了一些基本的文件了。直接开始创建就可以了。

第一步:

先创建头文件

//
//  GameScene.h
//  study_01
//
//  Created by Carlos on 15/6/3.
//
//

#ifndef study_01_GameScene_h
#define study_01_GameScene_h
//防止重复包含头文件
#include "cocos2d.h"
//新建一个类,公共继承于cocos2d里面的Layer类
class GameScene:public cocos2d::Layer
{
//声明一些方法
private:
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();
    // implement the "static create()" method manually
    CREATE_FUNC(GameScene);
};
#endif



如上面所示,我都做了一些注释,头文件里面,因为就是一些声明。主要的过程,都在cpp文件里面。而这些方法,都是默认的例子里面有的,

第二点:

把自己的一些资源文件,放在resource目录下面,因为我是第一次使用xcode,对于这个,还真是不熟,我直接使用finder,往resource目录里面,拖了两张图片,以为就可以了,没想到不行,最后写完了,运行的时候,一直报错。原来,直接使用finder拖拽,xcode还不会自动刷新。我的解决办法是,直接把图片拖到xoode的项目目录中,这样就可以了。

第三步:

编写自己的cpp文件,这里面,我做了尽量详细地注释,应该不难理解。

//
//  GameScene.cpp
//  study_01
//
//  Created by carlos on 15/6/3.
//
//

#include "GameScene.h"
#include "cocos2d.h"

USING_NS_CC;

Scene* GameScene::createScene()
{
    auto scene = Scene::create();
    auto layer = GameScene::create();
    scene->addChild(layer);
    return scene;
}
bool GameScene::init()
{
    //如果父类没有初使化成功,就返回false
    if (!Layer::init()) {
        return false;
    }
    //在这里,我们往场景里面添加两张图片,需要先图片添加到我们的Resources文件夹
    //先获取窗口的尺寸
    Size size = Director::getInstance()->getVisibleSize();
    //这里先创建背景bg,里面的参数呢,就是图片的名字
    auto bg = Sprite::create("bg.jpg");
    //设置背景图片的位置
    bg->setPosition(size.width/2,size.height/2);
    //获取缩放比例
    float sx = size.width/bg->getContentSize().width;
    float sy = size.height/bg->getContentSize().height;
    //根据前面计算的比例,设置让背景全屏
    bg->setScale(sx,sy);
    //将背景添加到这个里面,第一个参数表示要添加的场景,第二个参数是Z轴的坐标,如果你再添加一个场景,Z轴为1,那它就会在0的上面
    this->addChild(bg,0);
    //再创建第二个场景
    auto button = Sprite::create("button.png");
    button->setPosition(size.width/2,size.height/2);
    this->addChild(button,1);
    return true;
    
}

这两个创建好了以后,需要把代理类里面的场景,换成我们自己的。因为新建的项目,默认的场景是HellowWorldScene,我们替换成我们的,然后,运行,就可以看到效果,如下面所示,是AppDelegate.cpp中的一个方法

bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("My Game");
        director->setOpenGLView(glview);
    }

    // turn on display FPS
    director->setDisplayStats(true);

    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    register_all_packages();

    // create a scene. it's an autorelease object
<span style="white-space:pre">	</span>//就是在这里替换的,GameScene就是我自己创建的一个场景
//    auto scene = HelloWorld::createScene();
    auto scene = GameScene::createScene();

    // run
    director->runWithScene(scene);

    return true;
}

猜你在找的Cocos2d-x相关文章