cocos2dx场景切换中init、onEnter、onEnterTransitionDidFinish的调用顺序

这些方法调用的先后顺序如下(使用 replaceScene 方法):


1. 第2个场景的 scene 方法


2. 第2个场景的 init 方法


3. 第2个场景的 onEnter 方法


4. 转场


5. 第1个场景的 onExit 方法


6. 第2个场景的 onEnterTransitionDidFinish 方法


7. 第1个场景的 dealloc 方法

onEnter()   是在进入场景的一瞬间就开始执行了。


onEnterTransitionDidFinish() 是在完全进入场景后开始执行的。



因为在弄场景的延时跳转,游戏一开始显示公司Logo,然后显示游戏场景界面。



在第一个场景welcomScene的 onEnter()  开始场景跳转的事件。 延时3秒。


void WelcomScene::onEnter()  
{  
   //跳转场景  
   CCScene* pScene=InverseWarsScene::scene();  
   CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(3,pScene));  
}  



这里要用到播放背景音乐,背景音乐可以在一开始进入场景 onEnter() 时候进行预加载,然后在完全进入场景 onEnterTransitionDidFinish() 的时候开始播放音乐。

void InverseWarsScene::onEnter()  
{  
   //在刚进入界面的时候预加载背景音乐,在inverseWarsScene场景开始播放音乐  
   CocosDenshion::SimpleAudioEngine::sharedEngine()-> preloadBackgroundMusic("Audio/Background/ChmpSlct_BlindPick.mp3");  
}  
 
 
//在完全进入这个场景后开始执行的事件  
void InverseWarsScene::onEnterTransitionDidFinish()  
{  
   //完全进入场景后开始播放音乐  
   CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("Audio/Background/ChmpSlct_BlindPick.mp3");  
}  

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment