每当运行程序时,左下角的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. MySQL性能优化的最佳经验

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  2. PHP 逻辑思维题

    约瑟夫环 一群猴子排成一圈,按1,2,...,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止 ...

  3. Digit Counts

    Count the number of k's between 0 and n. k can be 0 - 9. Example if n = 12, k = 1 in [0, 1, 2, 3, 4, ...

  4. Servlet过滤器和监听器

    1,Servlet过滤器 <filter> <filter-name>charset</filter-name> <filter-class>org.g ...

  5. August 1st, 2016, Week 32nd Monday

    Laughing is the most touching mask. 笑容是最动人的面具. I used to be very weclome in those I had met. And the ...

  6. 解决Unable to locate Kerberos realm

    在windows环境下 将服务器上的/etc/krb5.conf 复制到<jdk-home>/jre/lib/security

  7. C++拷贝构造函数(深拷贝,浅拷贝)

    http://www.cnblogs.com/BlueTzar/articles/1223313.html 对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;  ...

  8. 安装memcached服务器和PHP中添加memcache拓展模块

    Memcached是一个高性能的分布式内存对象缓存系统,用于动态web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提拱动态 数据驱动网站的速度. memcached ...

  9. svn Error: post-commit hook failed (exit code 127) with output

    Command: Commit Modified: C:\Users\xsdff\Desktop\project\index.html Sending content: C:\Users\xsdff\ ...

  10. Hibernate日常应用的相关问题

    1.在控制台中显示Hibernate打印的SQL中的参数 默认情况下,hibernate的sql中都是以问号代表参数,并没有显示参数的真实值,但是也不是做不到,只需要两步配置就可以显示出参数的真实值了 ...