大佬教程收集整理的这篇文章主要介绍了Cocos2d-x 3.0-AppDelegate入口类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是Cocos2d-x的程序入口:@H_944_3@
class@H_944_3@ AppDelegate : private@H_944_3@cocos2d@H_944_3@::Application@H_944_3@
public:@H_944_3@
AppDelegate();
virtual@H_944_3@ ~AppDelegate();
virtual@H_944_3@ bool@H_944_3@ applicationDidFinishLaunching();
virtual@H_944_3@ void@H_944_3@ applicationDidEnterBACkground();
virtual@H_944_3@ void@H_944_3@ applicationWillEnterForeground();
};
说明:
该类继承了cocos2d@H_944_3@::Application,@H_944_3@
@H_944_3@
class@H_944_3@ @H_944_3@CC_DLL@H_944_3@ Application :@H_944_3@public@H_944_3@ @H_944_3@ApplicationProtocol
.......
在每个不同的平台都会ApplicationProtocol的实现类,源码在:cocos2d-x-3.0/cocos/2d/platform目录下,大家可以详细阅读@H_944_3@
各平台都会有自己的入口函数(例如main)@H_944_3@
在main 中会创建一个某平台的窗口,之后创建AppDelegate的实例,
所以在整个Cocos2d-x中AppDelegate就是一个单例模式:
static@H_944_3@ AppDelegate@H_944_3@ s_sharedApplication;(比如在在Mac平台的AppController.mm中)
然后在Application的实现中,如下:
Application@H_944_3@* Application@H_944_3@::sm_pSharedApplication =0@H_944_3@;
Application@H_944_3@::Application()
@H_944_3@CC_ASSERT@H_944_3@(!@H_944_3@sm_pSharedApplication);@H_944_3@
@H_944_3@sm_pSharedApplication =@H_944_3@this@H_944_3@;@H_944_3@
}
Application@H_944_3@::~Application()
@H_944_3@CC_ASSERT@H_944_3@(@H_944_3@this@H_944_3@ ==@H_944_3@sm_pSharedApplication);@H_944_3@
@H_944_3@sm_pSharedApplication =@H_944_3@0@H_944_3@;@H_944_3@
}
//3.0之后用这个方法
Application* @H_944_3@Application::geTinstance()@H_944_3@
@H_944_3@CC_ASSERT@H_944_3@(@H_944_3@sm_pSharedApplication);@H_944_3@
@H_944_3@return@H_944_3@@H_944_3@sm_pSharedApplication;@H_944_3@
}
我们在编程中只需要定义这个类处理3个回调方法就好了,不同平台的窗口消息大概分了3种:1。系统平台的窗口创建完成
2。系统通平台的窗口被盖住将进入后台运行
3。系统平台的窗口恢复到前台
分别对应了AppDelegate中的几个方法
virtual@H_944_3@bool@H_944_3@applicationDidFinishLaunching();
virtual@H_944_3@void@H_944_3@applicationDidEnterBACkground();
virtual@H_944_3@void@H_944_3@applicationWillEnterForeground();
一般情况下在applicationDidFinishLaunching方法中:1.初始化导演
2.创建第一个场景
3.启动这个场景
然后,我们看Application中的run方法(是系统平台的main方法调用的该方法)
int@H_944_3@ @H_944_3@Application::run()@H_944_3@
@H_944_3@if@H_944_3@ (@H_944_3@applicationDidFinishLaunching())@H_944_3@
[[@H_944_3@CCDirectorCaller@H_944_3@@H_944_3@sharedDirectorCaller] @H_944_3@startMainLoop];@H_944_3@
}
}
因此,这个方法执行完成后,Cocos2d-x就开始了主逻辑循环。当android,ios平台来电话,就会有新窗口盖住当前窗口,applicationDidEnterBACkground就会被调用
当windows,mac平台最小化,applicationDidEnterBACkground就会被调用
一般在这个方法中处理:
让所有的屏幕动作停下来
让所有的音乐和音效停下来
(有时候要保存当前游戏状态持久化到磁盘)
applicationWillEnterForeground中处理
让所有屏幕动作继续
让有音乐和音效继续
(恢复用户数据)
---------------------------------总结----------------------------
从这个角度看,学习Cocos2d-x要比学android,ios还要简单
onCreate
onStart
onResume
onPause
onStop
onDestroy
Android竟然要搞这么多。
以上是大佬教程为你收集整理的Cocos2d-x 3.0-AppDelegate入口类全部内容,希望文章能够帮你解决Cocos2d-x 3.0-AppDelegate入口类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。