• cocos游戏的真正入口,用C++实现的demo版本


    1.cocos游戏的出发点

    在main函数中有一句:   return CCApplication::sharedApplication()->run();

    2.经过层层深入发现,真正的入口:  bool AppDelegate::applicationDidFinishLaunching()

    3.类继承关系图:

    4.代码实现:

    CCApplicationProtocol的头文件如下,.cpp文件为空

    #pragma once
    class CCApplicationProtocol
    {
    public:
        /*定义了一个虚接口,用于游戏的真正入口*/
        virtual bool applicationDidFinishLaunching() = 0;
    };

    CCApplication.h

    #pragma once
    #include "CCApplicationProtocol.h"
    
    #include <iostream>
    using namespace std;
    
    class CCApplication :public CCApplicationProtocol
    {
    public:
        CCApplication();
    
        /*run方法*/
        virtual int run();
        /*返回静态指针*/
        static CCApplication* sharedApplication();
    
    protected:
        /*静态指针,用于实现单例*/
        static CCApplication * sm_pSharedApplication;
    };

    CCApplication.cpp

    #include "CCApplication.h"
    
    /*cpp文件中初始化静态成员*/
    CCApplication * CCApplication::sm_pSharedApplication = NULL;
    
    CCApplication::CCApplication()
    {
        /*将子类对象赋值给父类的静态指针*/
        sm_pSharedApplication = this;
    }
    
    CCApplication* CCApplication::sharedApplication()
    { 
        /*实现单例*/
        if (sm_pSharedApplication != NULL)
        return sm_pSharedApplication;
    }
    
    int CCApplication::run()
    {
        /*调用父类的方法,实现游戏的启动*/
        applicationDidFinishLaunching();
        return 0;
    }

    AppDelegate.h

    #pragma once
    #include "CCApplication.h"
    class AppDelegate :private CCApplication
    {
    public:
        /*实现了继承来的祖父类方法*/
        virtual bool applicationDidFinishLaunching();
    };

    AppDelegate.cpp

    #include "AppDelegate.h"
    
    /*实现了继承来的祖父类方法*/
    bool AppDelegate::applicationDidFinishLaunching()
    {
        /*do somethint to iniialize the game*/
    
        cout << "game start" << endl;
        return true;
    }

    测试代码:

    #include "AppDelegate.h"
    
    int main()
    {
        AppDelegate app;
        CCApplication::sharedApplication()->run();
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    sqlserver 动态 sql语句的执行
    SqlServer位运算 权限设计
    更改主数据 的管理员账户
    如何查看dll 的PublicKeyToken
    varbinary 与 字符串 的互换函数
    analysis service 配置远程连接
    sqlserver字符串拆分(split)方法汇总
    openfile 安装备忘
    Lamp 在centos 中的安装
    Oracle查询表中的各列的列名,数据类型,以及类型长度
  • 原文地址:https://www.cnblogs.com/ttss/p/4054378.html
Copyright © 2020-2023  润新知