ios cocos2d FPS过低的解决方法
每当运行程序时,左下角的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过低的解决方法的更多相关文章
- iOS开发---- 开发错误汇总及解决方法
本文转载至 http://blog.csdn.net/shenjx1225/article/details/8561695 一.今天调试程序的时候,出现了一个崩溃,信息如下: 2013-02-01 0 ...
- 关于IOS新手在安装cocoa pods失败,因为ruby版本过低的解决方法+ (void) {升级ruby}
http://blog.csdn.net/zhaoen95/article/details/51995520 现在: 使用 OS 系统, 正在学习iOS 需要配置cocoapods 命令行中显 ...
- 【C++】cin、cout的效率比scanf和printf低的解决方法
玩竞赛的同学应该发现了C++中直接调用cout.cin的效率要比printf和scanf的效率要低. 要解决这个问题,只需要在前面加上一句 std::ios::sync_with_stdio(fals ...
- iOS ARC注释和错误的解决方法在使用
1.一个错误The current deployment target does not support automated __weak references 这个错误被所述支持iOS版本号不支持相 ...
- 【转】IOS 输入框被键盘遮盖的解决方法
做IOS开发时,难免会遇到输入框被键盘遮掩的问题.上网上搜索了很多相关的解决方案,看了很多,但是由衷的觉得太麻烦了. 有的解决方案是将视图上的所有的东西都添加到一个滚动视图对象( UIScrollVi ...
- 关于 error C2039: “create”: 不是“cocos2d::GLView”的成员的解决方法
问题: 跑一个demo,因为是涉及3.x版本的引擎,不是很熟悉,在VS2013上运行,报错 error C2039: “create”: 不是“cocos2d::GLView”的成员 解决: 通过查阅 ...
- iOS 的url中含有中文解决方法
[NSURLURLWithString:urlString]生成URL对象时,iOS客户端不能正确进行网络请求,网上找到的URLEncode方法又不能完全解决问题. 方法1: NSString* en ...
- "MySql.Data.MySqIClient.MySqlProviderSevices”违反了继承安全 性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安 全可访问性低。 "解决方法
写Code First 时(使用的是MySql数据库),添加好EntityFrame.MySql.Data .MySql.Data.Entity后 ,写好TestDbContext类. 运行时报出一个 ...
- CSS3中的border-radius兼容IE低版本解决方法
ie-css3.htc先说道说道这斯是弄啥嘞ie-css3.htc是一个可以让IE浏览器支持部份CSS3属性的htc文件,不只是box-shadow,它还可以让你的IE浏览器支持圆角属性border- ...
随机推荐
- centos7下cups + samba共打印服务的教程
centos7系统我们用到的不多但是这款系统比centos6功能要强大了不少,下文来介绍一篇centos7下cups + samba,共打印服务的例子,具体如下所示. 这个算是rhce课程的篇外篇 ...
- c++ builder xe2 (Embarcadero rad studio) 远程调试 同样适用于 delphi 远程调试 教程
转载:http://www.cnblogs.com/zhangdongsheng/p/3411056.html 每次要远程调试的时候都要看半天的xe2英文帮助文档,今天正好有点时间,把它写下来. 一. ...
- Java锁之自旋锁详解
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) .这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类 ...
- C++复数四则运算的实现
程序主要实现复数的加减乘,数乘,取共轭功能. 将所有函数都定义为了成员函数. 使用库函数atof将字符串转换为浮点型数据. 函数主要难点在于处理输入.由于需要判断输入是选择退出还是继续,所以用字符串来 ...
- Timer1控件的属性
- python 异常类型
1.NameError:尝试访问一个未申明的变量>>> vNameError: name 'v' is not defined 2.ZeroDivisionError:除数为0&g ...
- 63.如何对单链表进行快排?和数组快排的分析与对比[quicksort of array and linked list]
[本文链接] http://www.cnblogs.com/hellogiser/p/quick-sort-of-array-and-linked-list.html [题目] 单链表的特点是:单向. ...
- 47. 数组中出现次数超过一半的数字[Number appears more than half times]
[题目]:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字. 例如长度为9的数组{1,2,3,2,2,2,5,4,2}中次数超过了数组长度的一半的数字为2,而长度为8的数组{1,2,3,2 ...
- Java for LeetCode 047 Permutations II
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- Ubuntu进不去,显示error:unknown filesystem (最简单解决方案总结)
error filesysterm:文件系统错误 grub rescue:是让你拯救grub,就是你的grub坏了,引导程序坏了 要安装盘?要重装?No…… 只要几行命令就ok了 是的,这是我昨天亲自 ...