zoukankan      html  css  js  c++  java
  • cocos2d-x 3.6版连连看载入资源

    网上找了一个梦幻连连看的资源。大家能够百度一下。然后整理一下加到project里面去。包含声音和图片文件。后面解释怎样整理能够方便管理。

    我不推荐在代码里面直接引用资源文件名称,我称之为硬编码。

    做iOS开发的同学好像比較习惯这样,要用按个图片,直接用图片来索引。

    我们将全部的资源文件用C风格的字符串做一个索引,放在一个头文件Resources.h里面。这样以后须要改动图片或者索引能够非常方便的改动。
    这里写图片描写叙述

    好,先加这么多资源。

    来看看AppDelegate.cpp,这是入口。看看入口函数
    applicationDidFinishLaunching。

        auto screenSize = glview->getFrameSize();
    
        auto designSize = Size(960, 640);
    
        auto fileUtils = FileUtils::getInstance();
        std::vector<std::string> searchPath;
    
        if (screenSize.width > 960) {
            designSize = Size(1136, 640);
            searchPath.push_back("Iphone5");
        }
    
        fileUtils->setSearchPaths(searchPath);
    
        glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::SHOW_ALL);
    
    
    
        // create a scene. it's an autorelease object
        auto scene = StartGame::createScene();
    
        // run
        director->runWithScene(scene);

    我这里写的比較简单。由于仅仅做了960X640和1136X640两种资源,所以仅仅做了这两个的适配。这里的适配比較简单粗暴,就是依据屏幕尺寸去载入相应的资源,同一时候设置相应的设计分辨率。

    这不是重点。后面我会重点讲分辨率适配。这里仅仅是出来一个界面。重点是我们的连连看游戏。

        // create a scene. it's an autorelease object
        auto scene = StartGame::createScene();
    
        // run
        director->runWithScene(scene);

    最后两句创建了一个StartGame的场景,导演运行这个场景。

    假设你看你创建的project,会发现源代码里面是用的Helloworld。是的,我们就是要干掉HelloWorld。创建我们自己的游戏场景。

    右键点击xcode左側的Classes,选择新建文件。选择C++。取个名字StartScene。同一时候创建头文件。
    这里写图片描写叙述

    好了。怎样来写这个StartScene。呢。一步一步来。


    我先不讲原理,直接讲怎么搞。


    首先要知道。我们这个连连会是神马样子的。
    至少应该是这种,首页进来有个大背景。然后有些点缀物,比方蓝天白云神马的,然后有个button,点击開始游戏。
    好,先看怎么来出一个背景。
    StartScene.h

    class StartGame : public cocos2d::Layer
    {
    public:
        static cocos2d::Scene* createScene();
    
        virtual bool init();
    
        void play(void);
    
        CREATE_FUNC(StartGame);
    };

    定义了几个函数。
    createScene()是一个静态函数,用来创建一个场景。
    init()函数比較怪,是一个虚函数,为什么会这样。后面讲。先这么写好了。
    play(void)是我们自己定义的一个函数,看名字就知道干嘛的。


    CREATE_FUNC(StartGame),是个神马东西,也是一个create函数,用来创建StartGame实例的。后面大家会知道这就是引擎里面用的最多的二阶段构造器。

    再来看实现文件cpp

    #include "StartScene.h"
    #include "Resources.h"
    USING_NS_CC;
    
    Scene* StartGame::createScene()
    {
        // 创建一个场景实例
        auto scene = Scene::create();
    
        // 创建StartGame的实例,是一个Layer
        auto Layer = StartGame::create();
    
        // 把StartGame的对象加入到场景里面
        scene->addChild(Layer);
    
        return scene;
    }
    
    bool StartGame::init()
    {
        // 先调父类的init函数
        // 这里能够知道,init()函数是一个继承下来的函数,并且是一个虚函数。子类能够重写这个函数
        if ( !Layer::init() ) {
            return false;
        }
    
        // 获取屏幕可视区域
        Size visibleSize = Director::getInstance()->getVisibleSize();
    
        // 创建一个背景
        auto background = Sprite::create(s_backgound);
    
        // 设置位置为中心位置
        background->setPosition(visibleSize.width / 2, visibleSize.height / 2);
    
        // 加入到当前层
        addChild(background);
    
    
        return true;
    }
    
    void StartGame::play()
    {
    
    }

    代码里面有写凝视。非常easy对不正确。

    看跑起来会是个什么东西。
    这里写图片描写叙述
    就是个海洋背景图嘛。

  • 相关阅读:
    FineReport图表、参数、填报、决策报表制作
    FineReport入门
    python时间计算:当天、前一天、月初、月末、季初、季末、半年初、半年末、年初、年末
    授予mysql的其他用户数据库的使用权限
    Python日志记录
    JStorm:概念与编程模型
    ftp传输图片损坏原因
    web应用中浏览器与服务端的编码和解码
    Http协议中的CharacterEncoding、Content-Encoding和Transfer-Encoding
    设计模式心法之单一职责原
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5274706.html
Copyright © 2011-2022 走看看