(原创)cocos2d-x 3.0 示例代码分析1:AppDelegate

星月最近在用3.0做类似刀塔游戏,第一次用3.0,之前一直只是查查资料,最近发现做一些特定行为需要对3.0一些新的特性了解。所以趁这个机会,把3.0的测试代码过一遍,同时增加注释,希望能对大家有帮助~

因为项目原因,所以不定期更新~~(小白:借口,继续找借口!)

星月倾心贡献~~~

// AppDelegate.cpp

/****************************************************************************
 Copyright (c) 2013      cocos2d-x.org
 Copyright (c) 2013-2014 Chukong Technologies Inc.

 http://www.cocos2d-x.org

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 in the Software without restriction, including without limitation the rights
 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:

 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.

 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 ****************************************************************************/

#include "AppDelegate.h"

#include "cocos2d.h"
#include "controller.h"
#include "cocostudio/CocoStudio.h"
#include "extensions/cocos-ext.h"

USING_NS_CC;

AppDelegate::AppDelegate()
:_curTest(nullptr)
{
}

AppDelegate::~AppDelegate()
{
//    SimpleAudioEngine::end();
    // 释放armature
    cocostudio::ArmatureDataManager::destroyInstance();
}

bool AppDelegate::applicationDidFinishLaunching()
{
    // As an example, load config file
    // XXX: This should be loaded before the Director is initialized,
    // XXX: but at this point, the director is already initialized
    Configuration::getInstance()->loadConfigFile("configs/config-example.plist");

    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLView::create("Cpp Tests");
        director->setOpenGLView(glview);
    }

    // 启用 FPS 显示
    director->setDisplayStats(true);

    // 设置 FPS 上限。如果不加设置,则默认 FPS 上限为 60
    director->setAnimationInterval(1.0 / 60);

    // 获取屏幕尺寸
    auto screenSize = glview->getFrameSize();

    auto designSize = Size(480, 320);

    auto fileUtils = FileUtils::getInstance();
    std::vector<std::string> searchPaths;

    // 这里是实现的重点,比较屏幕的高和设定的适配尺寸的高,选择合适的图片
    // 然后将对应图片的路径添加到搜索路径中,那么cocos2d-x就会到该目录去寻找图片
    if (screenSize.height > 320)
    {
        auto resourceSize = Size(960, 640);
        searchPaths.push_back("hd");
        searchPaths.push_back("hd/scenetest");
        searchPaths.push_back("hd/scenetest/ArmatureComponentTest");
        searchPaths.push_back("hd/scenetest/AttributeComponentTest");
        searchPaths.push_back("hd/scenetest/BackgroundComponentTest");
        searchPaths.push_back("hd/scenetest/EffectComponentTest");
        searchPaths.push_back("hd/scenetest/LoadSceneEdtiorFileTest");
        searchPaths.push_back("hd/scenetest/ParticleComponentTest");
        searchPaths.push_back("hd/scenetest/SpriteComponentTest");
        searchPaths.push_back("hd/scenetest/TmxMapComponentTest");
        searchPaths.push_back("hd/scenetest/UIComponentTest");
        searchPaths.push_back("hd/scenetest/TriggerTest");
        director->setContentScaleFactor(resourceSize.height/designSize.height);
    }
    else
    {
        searchPaths.push_back("scenetest/ArmatureComponentTest");
        searchPaths.push_back("scenetest/AttributeComponentTest");
        searchPaths.push_back("scenetest/BackgroundComponentTest");
        searchPaths.push_back("scenetest/EffectComponentTest");
        searchPaths.push_back("scenetest/LoadSceneEdtiorFileTest");
        searchPaths.push_back("scenetest/ParticleComponentTest");
        searchPaths.push_back("scenetest/SpriteComponentTest");
        searchPaths.push_back("scenetest/TmxMapComponentTest");
        searchPaths.push_back("scenetest/UIComponentTest");
        searchPaths.push_back("scenetest/TriggerTest");
    }

    fileUtils->setSearchPaths(searchPaths);

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
    // a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly
    // 应用程序可见,同时保持原始应用程序的宽高比
    glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::SHOW_ALL);
#else
    // 铺满全屏,但是可能会失真,不保持原始应用程序的宽高比
    glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::NO_BORDER);
#endif

     // 创建一个场景,场景是一个 autorelease 对象
    auto scene = Scene::create();

    // 创建图层
    auto layer = new TestController();

#if (CC_TARGET_PLATFORM != CC_PLATFORM_WP8) && (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)
    layer->addConsoleAutoTest();
#endif

    layer->autorelease();

    // 将图层加入到场景中
    scene->addChild(layer);

    // 运行场景
    director->runWithScene(scene);

    // Enable Remote Console
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WP8) && (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT)
    // 参考资料http://www.tuicool.com/articles/yauuueM
    // 在Cocos2d-x 3.0 版新增了Console模块,可实现远程调试。在PC上连接5678端口,即可连接应用程序,输入对应的命令进行调试功能.
    auto console = director->getConsole();
    console->listenOnTCP(5678);
#endif

    return true;
}

// This function will be called when the app is inactive. When comes a phone call,it‘s be invoked too
void AppDelegate::applicationDidEnterBackground()
{
    Director::getInstance()->stopAnimation();
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
    Director::getInstance()->startAnimation();
}

// 设置现在正在运行的测试例
void AppDelegate::setCurrentTest(BaseTest* curTest)
{
    _curTest = curTest;
}

// 获得现在正在运行的测试例
BaseTest* AppDelegate::getCurrentTest()
{
    return _curTest;
}

// (注:星月的英语水平有限,所以可能有错误的敌方,请大家谅解)(小白:你英语过四级了吗...)

AppDelegate到这里结束,敬请期待下一章节^_^(小白:期待毛线!@!)

作者使用 cocos2d-x 3.0 示例代码分析,未经作者允许,请勿转载!在此谢谢各位手下留情~~~

本文没有获得作者本人同意,不得转载,否则必追究相关责任。转载请注明出处!!~~

原文地址:http://www.cnblogs.com/wodehao0808/p/4019587.html

时间: 2024-10-19 03:48:31

(原创)cocos2d-x 3.0 示例代码分析1:AppDelegate的相关文章

【玩转微信公众平台之八】 示例代码分析

0.下载安装Opencv,当前版本为249. 1.下载Python,当前OPencv版本为249,不过其支持的最新版本的Python为2.7,所以可以下载276版本. 2.下载numpy,开始我使用了1.6,没有通过,错误如图.下载了最新的1.8.1版本. 3.将Opencv安装目录下opencv\build\python\2.7\x86中的cv2.pyd复制到python安装目录Lib\site-packages下. 4.找到opencv源文件内的draw.py运行. [玩转微信公众平台之八]

微信公众平台开发(二) 微信公众平台示例代码分析

原文地址:http://www.cnblogs.com/mchina/archive/2013/06/07/3120592.html 一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip 三.分析代码 完整代码如下: <?php /** * wechat php test */ //define your

SDL2.0例子代码分析-----CheckKeys Project

SDL简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux.Windows.Mac OS X等)的应用软件.目前SDL多用于开发游戏.模拟器.媒体播放器等多媒体应用领域. SDL1.2和SDL2的差别 SDK1.2和SDL2.1系列的API接口变动的不小,当然功能也大大增强,支持多线程窗口. 具体的change 请看 h

apollo2.0 radar代码分析

从apollo2.0的代码上看,百度是想做lidar和radar融合的先看传感器输出数据定义class SensorRawFrame{public:SensorType sensortype;double timestamp;Eigen::Matrix4d pose;};// lidar输出数据定义,用的是Velodyne的产品,包含了一块点云,pcl库格式class Velodyne的产品RawFrame : public SensorRawFrame {public:VelodyneRawF

SDL2.0例子代码分析---循环播放wav loopwav

SDL2.0中循环播放一段声音文件 ,并且添加上注释. /* 加载并且循环播放一个WAV文件*/ /* loopwaves.c is much more robust in handling WAVE files -- This is only for simple WAVEs */ #include "SDL_config.h" #include <stdio.h> #include <stdlib.h> #if HAVE_SIGNAL_H #include

左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景如果 如果有博客系统中须要实现例如以下功能: 系统中用户公布文章.改动文章.删除文章时,须要一些相关的操作须要运行. 公布文章后,给好友发送邮件通知.给用户加积分,对文章做全文索引. 改动文章后,给好友发送邮

基于OAuth2.0协议的QQ第三方授权登录iOS代码分析

简要说明: 授权登录已经成为注册方式里的主流,目前授权登录方式主要SSO跳转授权登录和OAuth2.0两种,前者好处无需用户再次输入密码就可以直接授权成功,但前提是必须用户手机端安装了该软件,比如QQ,后者的优势就是是否安装无关紧要,是一个HTML的页面呈现,麻烦就在于要输入用户名和密码,这就非常不爽了,但是有时候偏偏必须这么做,理由嘛,自行想想就好,接下来我们就看看如果利用OAuth2.0的方式来做QQ授权登录,如果想了解QQ的SSO授权登录,可以看我(博客主页)之前的博客:基于第三方QQ授权

Netty中分隔符解码器代码示例与分析

[toc] Netty中分隔符解码器代码示例与分析 通过特别解码器的使用,可以解决Netty中TCP的粘包问题,上一篇<Netty中LineBasedFrameDecoder解码器使用与分析:解决TCP粘包问题>通过行解码器的使用来解决TCP粘包问题,这意味着Netty的服务端和客户端在每次发送请求消息前,都需要在消息的尾部拼接换行符. 除了使用行解码器外,Netty还提供了通用的分隔符解码器,即可以自定义消息的分隔符,那就是DelimiterBasedFrameDecoder分隔符解码器.

Lua1.0 代码分析 table.c

转载出处:http://my.oschina.net/xhan/blog/307961 table.c 代码分析 全局符号,常量,字符串,关联数组,文件列表的定义. 全局符号: 初始有 5 个基本的符号,Lua 预设的函数和库函数都注册在里面. 常量: 初始的几个常量是 Lua 中 type 的名字. 字符串表,关联数组表,文件列表 所有的这些在 table.c 中定义的这些数组可以认为是 Lua 的全局注册表空间,Lua 的环境. 函数分析 ? 1 2 3 4 5 6 7 8 9 10 11