cocos2dx 场景切换
版本是 cocos2dx 3.3
场景切换的时刻是:(代码有删减)
void Director::drawScene() { // calculate "global" dt calculateDeltaTime(); if (_nextScene) { setNextScene(); } }
每一帧都会检查,看是不是有 _nextScene, 也就是 是不是需要进行场景切换了。
一般场景切换的过程:
当添加一个场景时,正在运行的场景会调用
_runningScene->onExitTransitionDidStart();
_runningScene->onExit();
然后新添加的场景会调用
onEnter();
onEnterTransitionDidFinish();
如果新添加的一个场景是 过渡场景(该对象里面包含真正的即将切换的场景对象),切换过程是这样:
1 过渡场景替代旧场景,变为正在运行的场景
2(过渡场景里面有保存了两个成员,一个是旧场景,一个真正的新场景)
通知旧场景 onExitTransitionDidStart()
通知真正即将添加的场景 onEnter()
3 当 过渡动作完成后,真正的新场景跟过渡场景切换。
通知旧场景 onExit()
通知新场景 onEnterTransitionDidFinish()
4 设置 真正的新场景为正在运行的场景,_nextScene 设置为 null
//这两个函数调用时刻是场景被移除时 onExitTransitionDidStart(); onExit(); //这个两个函数调用时刻是场景添加时 onEnter(); onEnterTransitionDidFinish();
通过以上分析,我们得出,当有过渡场景场景切换时,每一组函数的调用是有时间间隔的。没有过渡场景则是瞬时完成调用
take it easy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本