六 手游开发神器 cocos2d-x editor 之场景切换

原创 2014年01月23日 20:03:51



基础教程所有代码地址在:https://github.com/makeapp/cocoseditor-samples


接着上一节,我们已经创建了一个主游戏场景MainLayer,现在我们需要创建一个开始场景StartLayer,包括StartLayer.ccbx和StartLayer.js两个文件,点击StartLayer上的开始按钮,游戏切换到主游戏场景。


先看运行效果;





代码下载地址:http://www.kuaipan.cn/file/id_25348935635744469.htm?source=1



 

   首先创建StartLayer.ccbx和StartLayer.js文件,如下图操作(sources右击----new---layer)(sources右击---new---controller)




   创建成功后,指定控制器;



   

     我们设计开始场景,一个颜色背景层,一个MenuItem按钮;



添加MenuItem时候主要把参数target=doc选上 



   场景设计完毕,我们开始编程StartLayer.js ,只需要加入一个函数onPlayClicked(),点击player后跳转到MainLayer.js;

//
// CleanerScoreScene class
//
var StartLayer = function () {
    cc.log("StartLayer")
};

StartLayer.prototype.onDidLoadFromCCB = function () {
//    this.rootNode.onUpdate = function (dt)
//    {
//        this.controller.onUpdate();
//    };
//    this.rootNode.schedule(this.rootNode.onUpdate);

    if (sys.platform == 'browser') {
        this.onEnter();
    }
    else {
        this.rootNode.onEnter = function () {
            this.controller.onEnter();
        };
    }

    this.rootNode.onExit = function () {
        this.controller.onExit();
    };
};

StartLayer.prototype.onEnter = function () {
}

StartLayer.prototype.onUpdate = function () {

}

StartLayer.prototype.onPlayClicked = function () {
    cc.BuilderReader.runScene("", "MainLayer");
}

StartLayer.prototype.onExit = function () {

}

   然后再去设置Main.js,让主函数先启动StartLayer; 也别忘记加入这行代码require("StartLayer.js");

if (sys.platform == 'browser') {
    var require = function (file) {
        var d = document;
        var s = d.createElement('script');
        s.src = file;
        d.body.appendChild(s);
    }
} else {
    require("jsb.js");
}

cc.debug = function (msg) {
    cc.log(msg);
}

cc.BuilderReader.replaceScene = function (path, ccbName) {
    var scene = cc.BuilderReader.loadAsSceneFrom(path, ccbName);
    cc.Director.getInstance().replaceScene(scene);
    return scene;
}

cc.BuilderReader.loadAsScene = function (file, owner, parentSize) {
    var node = cc.BuilderReader.load(file, owner, parentSize);
    var scene = cc.Scene.create();
    scene.addChild(node);
    return scene;
};

cc.BuilderReader.loadAsSceneFrom = function (path, ccbName) {
    cc.BuilderReader.setResourcePath(path + "/");
    return cc.BuilderReader.loadAsScene(path + "/" + ccbName);
}

cc.BuilderReader.loadAsNodeFrom = function (path, ccbName, owner) {
    cc.BuilderReader.setResourcePath(path + "/");
    return cc.BuilderReader.load(path + "/" + ccbName, owner);
}

cc.BuilderReader.runScene = function (module, name) {
    var director = cc.Director.getInstance();
    var scene = cc.BuilderReader.loadAsSceneFrom(module, name);
    var runningScene = director.getRunningScene();
    if (runningScene === null) {
        cc.log("runWithScene");
        director.runWithScene(scene);
    }
    else {
        cc.log("replaceScene");
        director.replaceScene(scene);
    }
}

var ccb_resources = [
    {type: 'image', src: "Resources/HelloWorld.png"},
    {type: 'image', src: "Resources/CloseNormal.png"},
    {type: 'image', src: "Resources/CloseSelected.png"}
];

require("MainLayer.js");
require("StartLayer.js");

if (sys.platform == 'browser') {

    var Cocos2dXApplication = cc.Application.extend({
        config: document['ccConfig'],
        ctor: function () {
            this._super();
            cc.COCOS2D_DEBUG = this.config['COCOS2D_DEBUG'];
            cc.initDebugSetting();
            cc.setup(this.config['tag']);
            cc.AppController.shareAppController().didFinishLaunchingWithOptions();
        },
        applicationDidFinishLaunching: function () {
            var director = cc.Director.getInstance();
            // director->enableRetinaDisplay(true);
            // director.setDisplayStats(this.config['showFPS']);
            // set FPS. the default value is 1.0/60 if you don't call this
            director.setAnimationInterval(1.0 / this.config['frameRate']);
            var glView = director.getOpenGLView();
            glView.setDesignResolutionSize(1280, 720, cc.RESOLUTION_POLICY.SHOW_ALL);
            cc.Loader.preload(ccb_resources, function () {
                cc.BuilderReader.runScene("", "StartLayer");
            }, this);
            return true;
        }
    });
    var myApp = new Cocos2dXApplication();
} else {
    cc.BuilderReader.runScene("", "StartLayer");
}

  

    一切都好了,点击运行;先进入开始界面,点击play跳入游戏主界面


下一篇文章 我会介绍cocos2d-x  editor的字体设计       笔者(李元友)

资料来源:cocos2d-x  editor


Cocos2d-JS 3.3 模态对话框的实现

首先,先了解一下什么是模态对话框,百度百科的给出了下面一个定义: 模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对...

Cocos2d-JS中使用CocosStudio资源——登录界面

在本篇博客中,我们将通过一个在Cocos2d-JS中使用从CocosStudio导出的登录界面资源的例子,来简要介绍以下内容:Button控件,TextField输入框,CheckBox等控件的使用。...

五 手游开发神器 cocos2d-x editor 之贴图(TexturePacker)

这一节主要是介绍cocos2dx editor的贴图功能。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨平台游...

十四 手游开发神器 cocos2d-x editor 之串联游戏流程

这一节主要是介绍cocos2dx editor的串联游戏流程。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨平...

十 手游开发神器 cocos2d-x editor 之触摸事件

这一节主要是介绍cocos2dx editor的触摸事件,让小怪物跟随移动。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于coco...

十一 手游开发神器 cocos2d-x editor 之音乐和音效

这一节主要是介绍cocos2dx editor的背景音乐和音效。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨...

七 手游开发神器 cocos2d-x editor 之图片字体(LabelBMFont)

这一节主要是介绍cocos2dx editor的图片字体功能,实现分数不停的刷新效果。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基...

八 手游开发神器 cocos2d-x editor 之动画和帧动画

这一节主要是介绍cocos2dx editor的动画和帧动画,让小怪物摇摇晃晃的向前行走。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言...

三 手游开发神器 cocos2d-x editor 之基础工具 intellij idea

intellij idea 13 注册序列号:亲测有效  Orefa      00066-FEIQE-EEZDY-D9PBH-Z9W0E-SPJS1makeapp   00820-K2S8N-...

手游开发神器 cocos2d-x editor 教程聚合和代码下载(持续更新中)

——————————————游戏基础教程篇—————————————已完成————————— 一 cocos2d-x editor工具下载和基础教程JS篇: 一 手游开发神...
  • dj0379
  • dj0379
  • 2014年05月18日 14:30
  • 2796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:六 手游开发神器 cocos2d-x editor 之场景切换
举报原因:
原因补充:

(最多只允许输入30个字)