Cocos2d-x运行机制-代理模式

前端之家收集整理的这篇文章主要介绍了Cocos2d-x运行机制-代理模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Cocos2d-x的入口:

CCApplicationProtocol接口:定义通用接口

  1. // CCApplicationProtocol.h
  2. #pragma once
  3.  
  4. class CCApplicationProtocol
  5. {
  6. public:
  7. CCApplicationProtocol();
  8. virtual ~CCApplicationProtocol();
  9.  
  10. virtual bool applicationDidfinishLauching() = 0;
  11. };

CCApplication处理跨平台特性:

  1. //CCApplication.h
  2. #pragma once
  3. #include "CCApplicationProtocol.h"
  4.  
  5. class CCApplication : public CCApplicationProtocol
  6. {
  7. public:
  8. CCApplication();
  9. virtual ~CCApplication();
  10.  
  11. int run();
  12.  
  13. static CCApplication* sharedApplication();
  14.  
  15. static CCApplication* sm_pSharedApplication;
  16.  
  17. };
  1. //CCApplication.cpp
  2.  
  3. #include "CCApplication.h"
  4. #include "stddef.h"
  5.  
  6. CCApplication* CCApplication::sm_pSharedApplication = NULL;
  7.  
  8. CCApplication::CCApplication()
  9. {
  10. sm_pSharedApplication = this;//子类对象,其实就是APPDelegate对象
  11. }
  12.  
  13.  
  14. CCApplication::~CCApplication()
  15. {
  16. }
  17.  
  18. int CCApplication::run()
  19. {
  20. applicationDidfinishLauching();
  21.  
  22. return 0;
  23. }
  24.  
  25. CCApplication* CCApplication::sharedApplication()
  26. {
  27. if (sm_pSharedApplication != NULL)
  28. return sm_pSharedApplication;
  29. else
  30. return NULL;
  31. }

APPDelegate实现CCApplication

  1. //AppDelegate.h
  2.  
  3. #pragma once
  4. #include "CCApplication.h"
  5.  
  6. class AppDelegate : private CCApplication
  7. {
  8. public:
  9. AppDelegate();
  10. virtual ~AppDelegate();
  11.  
  12. //主要实现CCApplicationProtocol中的接口
  13. virtual bool applicationDidfinishLauching();
  14. };
  1. //AppDelegate.cpp
  2.  
  3. #include "AppDelegate.h"
  4. #include <iostream>
  5.  
  6.  
  7. AppDelegate::AppDelegate()
  8. {
  9. }
  10.  
  11.  
  12. AppDelegate::~AppDelegate()
  13. {
  14. }
  15.  
  16. //此方法才是程序的真正入口
  17. bool AppDelegate::applicationDidfinishLauching()
  18. {
  19. std::cout << "Game Start..." << std::endl;
  20.  
  21. return true;
  22. }

测试程序:

  1. //main.cpp
  2.  
  3. #include <iostream>
  4. #include "CCApplication.h"
  5. #include "AppDelegate.h"
  6.  
  7. void main()
  8. {
  9.  
  10. AppDelegate app;//完成CCApplication的初始化
  11.  
  12. //app初始化了CCApplication的静态成员sm_pSharedApplication
  13. //CCApplication::sharedApplication()得到的就是sm_pSharedApplication
  14. //然后CCApplication调用自身的run方法,run()中调用CCApplicationProtocol接口中的虚方法,而这些虚方法最终是在APPDelegate中的实现的。
  15. CCApplication::sharedApplication()->run();
  16.  
  17. system("pause");
  18. }

猜你在找的Cocos2d-x相关文章