Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x游戏开发(七)对象释放时机大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

欢迎转载:http://blog.csdn.net/fylz1125/article/details/8521272


这篇写写自动对象的释放时机。

一个对象调用autorelease()函数后就被加入自动释放池,那么它什么时候被释放呢?

我从前面说过的游戏主循环开始跟进:

  1. intCCApplication::run()
  2. {
  3. if(applicationDidFinishLaunching())
  4. [[CCDirectorCallersharedDirectorCaller]startMainLoop];//主循环开始
  5. }
  6. return0;
  7. }

继续跟进startMainLoop函数

?
    -(void)startMainLoop
  1. //CCDirector::setAnimationInterval()iscalled,weshouldinvalidateitfirst
  2. [displayLinkinvalidate];
  3. displayLink=nil;
  4. //displayLink是CADisplayLink对象,target是自己,回调是coCaller
  5. displayLink=[NSClassFromString(@"CADisplayLink")displayLinkWithTarget:selfSELEctor:@SELEctor(doCaller:)];//看这个doCaller回调
  6. [displayLinksetFrameInterval:self.interval];//设置帧率
  7. [displayLinkaddToRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];//添加到循环并启动
  8. }

看doCaller回调,

?
    voidCCDisplayLinkDirector::mainLoop(void)
  1. if(m_bPurgeDirecotorInNextLoop)
  2. @H_427_36@m_bPurgeDirecotorInNextLoop=false;
  3. purgeDirector();
  4. }
  5. elseif(!m_bInvalid)
  6. {
  7. drawScene();//drawthescene
  8. //releasetheobjects
  9. CCPoolManager::sharedPoolManager()->pop();
  10. }
好,一个循环完了。最后看到CCPoolManager::sharedPoolManager()->pop();就是用来释放对象的。

这里就释放对象了,有兴趣的同学可以自己跟进去看看到底是怎么释放的。

大佬总结

以上是大佬教程为你收集整理的cocos2d-x游戏开发(七)对象释放时机全部内容,希望文章能够帮你解决cocos2d-x游戏开发(七)对象释放时机所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:cocoscocos2ddx对象开发时机游戏释放
猜你在找的Cocos2d-x相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap