每当运行程序时,左下角的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. backbone杂记

    国人的一个不错的分享:http://gavin.iteye.com/blog/1446277 backbone项目如何组织文件结构 引用: http://bocoup.com/weblog/organ ...

  2. Controller之间传递数据:协议传值

    http://itjoy.org/?p=416 前边介绍过从第一个页面传递数据到第二个页面,那么反过来呢我们该如何操作?还是同一个例子,将第二个页面的字符串传递到第一个页面显示出来,这中形式就可以使用 ...

  3. HTML5/CSS3开发工具

    1.谷歌Google Web Designer https://www.google.com/webdesigner/ 这个工具不能在xp上运行,可以在win7 win8上运行 http://www. ...

  4. Junit4测试

    1.junit初级入门 2.常用注解 3.运行流程 4.测试套件使用 5.参数化设置

  5. 《ASP.NET1200例》<asp:DataList>分页显示图片

    aspx页面代码 <asp:DataList ID="dlPhoto" runat="server" Height="137px" W ...

  6. DroidDraw - Android的界面设计工具

    ADT中的界面开发工具实在是很烂,通常情况下都需要硬编码,对于程序员来说不但效率比较低下,而且调试起来极其不方便,还好在Google未推出GUI的"所见即所得"的工具之前,我们找到 ...

  7. July 28th, Week 31st Thursday, 2016

    Time is a bird flying into eternity. 时间是一只永远在飞翔的鸟儿. Time waits for nobody. Vitality shows in not onl ...

  8. 解决reload AVD list: cvc-enumeration-valid: Value '360dpi' is not facet-valid with respect to enumeration '[ldpi, mdpi, tvdpi, hdpi, 280dpi, xhdpi, 400dpi, xxhdpi, 560dpi, xxxhdpi]'. It must be a v

    解法: 将 D:\work\android-sdk-windows\tools\lib\devices.xml 替换到 D:\work\android-sdk-windows\system-image ...

  9. Oracle如何操作级联删除

    级联删除即删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用.在级联删除中,还删除其外键值引用删除的主键值的所有行. 语法: Foreign Key (column[,...n]) refe ...

  10. Redis中常用命令

    连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 持久化 save:将数据同步保存到磁盘 bgsave:将数据异步保存到磁盘 lastsave:返回上次成功将数据 ...