今天天气非常阴,立即要下雨了,陈吃早点功夫写点东西,

一场秋雨一场寒,十场秋雨要穿棉,各位从今往后多穿点

int Application::run()

{

if(!applicationDidFinishLaunching())

{

return 1;

}

long lastTime = 0L;

long curTime = 0L;

auto director = Director::getInstance();

auto glview = director->getOpenGLView();

// Retain glview to avoid glview being released in the while loop

glview->retain();

//看到了吗,事实上全部游戏就在这个循环中

while (!glview->windowShouldClose())   //假设没退出,比方用户按下了home 就退出了

    {

        lastTime = getCurrentMillSecond();  //获取当前系统时间

        director->mainLoop();                          //1.处理游戏画图和游戏逻辑

        glview->pollEvents();                           //2.处理游戏交互

                                                                                                                 

        curTime = getCurrentMillSecond();   //3.以上1.2必然要消耗一定的时间并且动画和怪物越多可能耗时越大所以curTime - lastTime就是这次计算消耗的时间

        if (curTime - lastTime <
_animationInterval) //假设curTime - lastTime < _animationInterval 

                                                                                          //说明在60/1秒内完毕了这一帧的计算再让cup sleep FPS剩下时间来保证帧率的稳定

        {

            usleep(static_cast<useconds_t>((_animationInterval - curTime + lastTime)*1000));

        }

       /////////假设想知道游戏中是否有不稳定怎样呢? 增加例如以下代码

      else

     {

        //........

     }

    }

/////////////////你明确了吗 亲

/* Only work on Desktop

*  Director::mainLoop is really one frame logic

*  when we want to close the window, we should call Director::end();

*  then call Director::mainLoop to do release of internal resources

*/

if (glview->isOpenGLReady())

{

director->end();

director->mainLoop();

}

glview->release();

return 0;

}

void Application::setAnimationInterval(double interval)

{

_animationInterval = interval*1000.0f;

}

Cocos2d-x3.2游戏的核心循环在Application,怎样处理FPS不稳的更多相关文章

  1. 台球游戏的核心算法和AI(1)

    前言: 08年的时候, 写过一个台球游戏, 用的是java, 不过代码真的是用传说中的神器notepad写的(你信吗? 其实是用GVIM写的, ^_^), 很多类都在同一java文件中编写. 可见当时 ...

  2. cocos2d-x游戏引擎核心(3.x)----事件分发机制之事件从(android,ios,desktop)系统传到cocos2dx的过程浅析

    (一) Android平台下: cocos2dx 版本3.2,先导入一个android工程,然后看下AndroidManifest.xml <application android:label= ...

  3. cocos2d-x游戏引擎核心之六——绘图原理和绘图技巧

    一.OpenGL基础 游戏引擎是对底层绘图接口的包装,Cocos2d-x 也一样,它是对不同平台下 OpenGL 的包装.OpenGL 全称为 Open Graphics Library,是一个开放的 ...

  4. 【Cocos2D研究院之游戏开发】

    http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发]   201211-19 Co ...

  5. Cocos2D:塔防游戏制作之旅(十八)

    在Enemy.m的getDamaged:方法只给你添加如下1行(在if条件内): [theGame awardGold:200]; 现在运行游戏你将注意到你不能放置超出你资源金币的炮塔了.当然杀死敌人 ...

  6. cocos2d-x游戏引擎核心之十一——并发编程(消息通知中心)

    [续] cocos2d-x游戏引擎核心之八——多线程 这里介绍cocos2d-x的一种消息/数据传递方式,内置的观察者模式,也称消息通知中心,CCNotificationCenter. 虽然引擎没有为 ...

  7. Spring Boot 核心配置文件 bootstrap & application

    Spring Boot 核心配置文件 bootstrap & application 1.SpringBoot bootstrap配置文件不生效问题 2.bootstrap/ applicat ...

  8. cocos2d-x游戏引擎核心之三——主循环和定时器

    一.游戏主循环 在介绍游戏基本概念的时候,我们曾介绍了场景.层.精灵等游戏元素,但我们却故意避开了另一个同样重要的概念,那就是游戏主循环,这是因为 Cocos2d 已经为我们隐藏了游戏主循环的实现.读 ...

  9. cocos2d-x游戏引擎核心之九——跨平台

    一.cocos2d-x跨平台 cocos2d-x到底是怎样实现跨平台的呢?这里以Win32和Android为例. 1. 跨平台项目目录结构 先看一下一个项目创建后的目录结构吧!这还是以HelloCpp ...

随机推荐

  1. java中由类名和方法名字符串实现其调用【反射机制】

    js里通过eval()函数,在知道某个方法名是可以实现调用该方法,那么在java里边又怎么实现的呢? java里边是通过反射机制来实现,代码如下: import java.lang.reflect.M ...

  2. cocos2dx A* + tiledMap

    本文转自:http://blog.csdn.net/w18767104183/article/category/1757765 前面一章讲了cocos2dx 中使用A星算法 这章中讲 A*结合tile ...

  3. VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management

    VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management 实验失败告终,启动VMware View Persona Management服务报10 ...

  4. java 常用的包 默认导入的包

    1.java.lang----包含一些Java语言的核心类,如String.Math.Integer.System和Thread,提供常用功能. 2.java.awt----包含了构成抽象窗口工具集( ...

  5. Web监听器导图详解(转)

    阅读目录 Web监听器 监听器的分类 Servlet版本与Tomcat版本 getAttribute与getParameter的区别 参考 监听器是JAVA Web开发中很重要的内容,其中涉及到的知识 ...

  6. windows phone (25) Canvas元素B

    原文:windows phone (25) Canvas元素B  ZIndex 这也是一个附加属性,表示canvas的children集合内的子元素的显示顺序,在canvas中的元素默认情况下是后面的 ...

  7. vps自己搭建VPN(转)

    1.购买一个VPS: https://www.pzea.com/North-America-openvz-vps.html 2.下载putty软件,进行vpn安装: http://www.chiark ...

  8. Boosting算法简介

    一.Boosting算法的发展历史 Boosting算法是一种把若干个分类器整合为一个分类器的方法,在boosting算法产生之前,还出现过两种比较重要的将多个分类器整合为一个分类器的方法,即boos ...

  9. 行人检测(Pedestrian Detection)资源整合

    一.纸 评论文章分类: [1] D. Geronimo, and A. M.Lopez. Vision-based Pedestrian Protection Systems for Intellig ...

  10. Mysql insert声明优化

    1) 假设你同一时候从同一客户插入非常多行,使用多个值表的INSERT语句. 这比使用分开INSERT语句快(在一些情况中几倍).    Insert into test values(1,2),(1 ...