自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching

自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching,第1张

概述上一节中,我们最终调用了Application的run方法。 在run方法中,调用了applicationDidFinishLaunching方法,这个方法在哪里呢? 可以看到在Application中并没有实现这个方法,这个方法来自Application的基类ApplicationProtocol。 ApplicationProtocol中,将applicationDidFinishLaunch

上一节中,我们最终调用了Application的run方法。

在run方法中,调用了applicationDIDFinishLaunching方法,这个方法在哪里呢?

可以看到在Application中并没有实现这个方法,这个方法来自Application的基类ApplicationProtocol。

ApplicationProtocol中,将applicationDIDFinishLaunching声明为纯虚函数,最终的实现放到了AppDelegate中。

修改上一节中的代码。

//AppDelegate.h

#ifndef __APP_DELEGATE__#define __APP_DELEGATE__#include "Application.h"#include <iostream>class AppDelegate: private Application {    public:        virtual bool applicationDIDFinishLaunching() {            std::cout << "delegate applicationDIDFinishLaunching" << std::endl;             return true;        }   };#endif

添加了对纯虚函数applicationDIDFinishLaunching的实现,在其中打印了一句话。


// Application.h

#ifndef __APPliCATION__                                                                                               #define __APPliCATION__                                                                                                                                                                                                                     #include "ApplicationProtocol.h"                                                                                                                                                                                                            #include <iostream>                                                                                                                                                                                                                         class Application: public ApplicationProtocol {                                                                           public:                                                                                                                   Application() {                                                                                                           sm_pSharedApplication = this;                                                                                     }                                                                                                                     static Application* getInstance() {                                                                                       return sm_pSharedApplication;                                                                                     }                                                                                                                     int run() {                                                                                                               std::cout << "App run ..." << std::endl;                                                                              if (!applicationDIDFinishLaunching()) {                                                                                   return 1;                                                                                                         }                                                                                                                 }                                                                                                                 protected:                                                                                                                static Application * sm_pSharedApplication;                                                                   };                                                                                                                                                                                                                                          Application * Application::sm_pSharedApplication = 0;                                                                                                                                                                                       #endif          

在Application中添加了对applicationDIDFinishLaunching的调用,并让他继承自抽象类ApplicationProtocol。

//ApplicationProtocol.h

class ApplicationProtocol {                                                                                               public:                                                                                                                   virtual ~ApplicationProtocol(){}                                                                                      virtual bool applicationDIDFinishLaunching() = 0;                                                             };  
在这个抽象类中声明纯虚函数applicationDIDFinishLaunching。

编译运行可以看到最终输出:

App run ...
delegate applicationDIDFinishLaunching


附代码:demo2

总结

以上是内存溢出为你收集整理的自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching全部内容,希望文章能够帮你解决自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1075798.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存