每当运行程序时,左下角的FPS就低到了10,使app很卡,

原来程序主要卡的部分

-(void)draw{
NSDate *startTime = [NSDate date];
[self func]; //func为调用的函数
NSLog(@"time:%f",-[startTime timeIntervalSinceNow]);
}

结果显示的时间远远超过了1.0/60,(1.0/60为AppDelegate.m中的[director_setAnimationInterval:1.0/60] 设置的FPS)

由于[self func]比较耗时超过了1.0/60,故考虑将函数func分解成几个函数,如func0,func1,func2等,同时增加了一个变量excPart = 0(用于决定执行哪个函数)

和几个保存func0,func1,func2相关信息的成员变量,将函数func尽可能的分解,使其每个函数的执行时间在1.0/60左右

-(void)draw{
NSDate *startTime = [NSDate date];
switch(excPart){
case :
[self func0];
excPart++;
NSLog(@"time0:%f",-[startTime timeIntervalSinceNow]);
break;
case :
[self func1];
excPart++;
NSLog(@"time1:%f",-[startTime timeIntervalSinceNow]);
break;
case :
[self func2];
excPart = ;
NSLog(@"time2:%f",-[startTime timeIntervalSinceNow]);
break;
defalut:
break;
}
}

使time0,time1,time2尽可能在1.0/60左右,可以借助增加成员变量的来分解函数

如果想使func只执行一次,可以增加成员变量Bool isExc = false

-(void)draw{
if (isExc == true){
NSDate *startTime = [NSDate date];
switch(excPart){
case :
[self func0];
excPart++;
NSLog(@"time0:%f",-[startTime timeIntervalSinceNow]);
break;
case :
[self func1];
excPart++;
NSLog(@"time1:%f",-[startTime timeIntervalSinceNow]);
break;
case :
[self func2];
excPart = ;
isExc = false; //结束执行
NSLog(@"time2:%f",-[startTime timeIntervalSinceNow]);
break;
defalut:
break;
}
}
}

解决此问题主要关注FPS和draw函数所消耗时间的关系

ios cocos2d FPS过低的解决方法的更多相关文章

  1. iOS开发---- 开发错误汇总及解决方法

    本文转载至 http://blog.csdn.net/shenjx1225/article/details/8561695 一.今天调试程序的时候,出现了一个崩溃,信息如下: 2013-02-01 0 ...

  2. 关于IOS新手在安装cocoa pods失败,因为ruby版本过低的解决方法+ (void) {升级ruby}

    http://blog.csdn.net/zhaoen95/article/details/51995520     现在: 使用 OS 系统, 正在学习iOS 需要配置cocoapods 命令行中显 ...

  3. 【C++】cin、cout的效率比scanf和printf低的解决方法

    玩竞赛的同学应该发现了C++中直接调用cout.cin的效率要比printf和scanf的效率要低. 要解决这个问题,只需要在前面加上一句 std::ios::sync_with_stdio(fals ...

  4. iOS ARC注释和错误的解决方法在使用

    1.一个错误The current deployment target does not support automated __weak references 这个错误被所述支持iOS版本号不支持相 ...

  5. 【转】IOS 输入框被键盘遮盖的解决方法

    做IOS开发时,难免会遇到输入框被键盘遮掩的问题.上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了. 有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollVi ...

  6. 关于 error C2039: “create”: 不是“cocos2d::GLView”的成员的解决方法

    问题: 跑一个demo,因为是涉及3.x版本的引擎,不是很熟悉,在VS2013上运行,报错 error C2039: “create”: 不是“cocos2d::GLView”的成员 解决: 通过查阅 ...

  7. iOS 的url中含有中文解决方法

    [NSURLURLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题. 方法1: NSString* en ...

  8. "MySql.Data.MySqIClient.MySqlProviderSevices”违反了继承安全 性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安 全可访问性低。 "解决方法

    写Code First 时(使用的是MySql数据库),添加好EntityFrame.MySql.Data .MySql.Data.Entity后 ,写好TestDbContext类. 运行时报出一个 ...

  9. CSS3中的border-radius兼容IE低版本解决方法

    ie-css3.htc先说道说道这斯是弄啥嘞ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border- ...

随机推荐

  1. HTML 笔记,持续更新

    一.文本格式化标签 <b> 定义粗体文本. <big> 定义大号字. <em> 定义着重文字. <i> 定义斜体字. <small> 定义小 ...

  2. 2015安徽省赛 C.LU的困惑

    题目描述 Master LU 非常喜欢数学,现在有个问题:在二维空间上一共有n个点,LU每连接两个点,就会确定一条直线,对应有一个斜率.现在LU把平面内所有点中任意两点连线,得到的斜率放入一个集合中( ...

  3. django-cms 代码研究(一)djangocms是什么

    首先用djangocms生成了一个站点(具体参考这里:http://www.cnblogs.com/Tommy-Yu/p/3878488.html),其文件结构如下: 本来以为会很有逼格,结果一看傻眼 ...

  4. 二模Day2题解

    小明搬家 题目描述 小明要搬家了,大家都来帮忙. 小明现在住在第N楼,总共K个人要把X个大箱子搬上N楼. 最开始X个箱子都在1楼,但是经过一段混乱的搬运已经乱掉了.最后大家发现这样混乱地搬运过程效率太 ...

  5. Encode and Decode Strings

    Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...

  6. Ubuntu安装steam游戏平台的解决方案

    steam是一个游戏平台,上面提供了很多收费和免费的游戏,在安装的过程中遇到了一些问题,所以把自己遇到的问题及解决方案分享出来供大家参考. 第一步:安装steam平台 sudo apt-get ins ...

  7. HDU 2841 Visible Trees 数论+容斥原理

    H - Visible Trees Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. Android之Fragment(二)

    本文主要内容 如何管理Fragment回退栈 Fragment如何与Activity交互 Fragment与Activity交互的最佳实践 没有视图的Fragment的用处 使用Fragment创建对 ...

  9. 在竞赛ACM Java处理输入输出

    一.Java之ACM注意点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非 ...

  10. OidView

    http://www.oidview.com/mibs/0/HOST-RESOURCES-V2-MIB.html