starling性能优化
在项目开发的过程中总结了一下starling的性能优化方案:
1. 不要频繁的读取显示对象的宽高:调用宽高属性时会调用显示对象的getBounds()方法,该方法会遍历该对象的所有子对象,重新计算宽高。在频繁使用宽高属性时,如没有特殊需要,最好把宽高保存到变量中,使用变量保存的值替代直接读取宽高属性。
2. 扁平化的Sprites:starling在每一帧都会遍历所有对象检查它们的状态,上传它们的数据到GPU进行重新渲染,调用Sprite的flatten()方法后,GUP便不会对该对象进行重新上传渲染,当你需要更新这个显示对象时,可以调用它的unflatten()方法。
3. QuadBatch:QuadBatch类是一个扁平化的容器,你每在容器上add一个对象时,它都会派发一个"ADDED"和"ADDED_TO_STAGE"事件,当你有很多对象时,也是一个不小的开销,特别时当你使用的纹理都是来自同一个纹理图集时QuadBatch会更加高效,它只能添加Image, Quad, 或 QuadBatch类的实例。
4. 减少事件派发:starling的显示对象在add在舞台上的时候都会派发一个"ADDED"和"ADDED_TO_STAGE"事件,移除的时候也是会派发"REMOVEED"和" REMOVEED _TO_STAGE"事件,很多时候这些事件对我们都没有意义,我们可以修改starling的显示对象或者自定义一个显示对象,重写它的addChild方法,将事件派发去掉,减少不必要的开销。
5. 清理彻底:在销毁一个对象时,保证将对象及子对象销毁彻底,并把事件移除干净,starling中频繁创建对象没有销毁就会造成资源超过上限的错误,造成程序崩溃。
6. 混合模式:如果有完全不透明的矩形纹理,我们可以让GPU禁用那些纹理混合。这对于大背景图像特别有用。设置object.blendMode = BlendMode.NONE;
7. touchEnable不可点击:给不需要接受事件的对象设置touchEnable= false;减少不必要的时间监听和派发。
8. 使用位图字体:使用位图字体替代系统字体,性能将成倍提高。
9. 纹理图集:starling采用了画家算法来处理显示列表,如果从一个单一的图集加载所有这些纹理,Starling就可以在一次调用中完成所有的绘制。starling中支持最大2048*2048大小的纹理图集。
10. 不可见放弃渲染:当显示对象不在屏幕内或者不在可视范围内,我们可以将其移除或者设置visible属性为false,这样可以极大的减少GPU渲染的压力,提高性能。
11. Image替代Button:在不必要的情况下,尽量使用Image不要使用Button,前者在渲染时的速度和开销都要优于后者。
12. 基本的AS3性能优化:使用for替代for each;不要在for循环中频繁创建对象;将数组的length属性赋值到变量上使用,而不是频繁调用等AS3的良好编码习惯。
13. 使用ATF纹理:这个格式非常强大,可以用命令行把一个PNG文件转换为ATF文件(包含针对不同设备的文件类型Android (ETC1), iOS(PVRTC) , Windows and MacOS (DXT))。Flash Player和AIR会自动根据运行平台选择合适的格式,ATF有着更快的渲染速度、更小的内存占用、更快的上传速度和更小的应用体积等优点,强力推荐使用。
(注:红色为重要优化方案)
starling性能优化的更多相关文章
- Starling性能优化技巧十五则
Starling的性能优化要点 一.尽可能减少状态变更 如您所知,Starling使用Stage3D来渲染所有的可见对象.这就意味着所有的绘制都是GPU完成的. 现在,Starling可以一个接一个的 ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- 02.SQLServer性能优化之---牛逼的OSQL----大数据导入
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
随机推荐
- NSNotification、delegate和KVO的区别
1.效率:delegate比nsnotification高.2. delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值, 也就是delegat ...
- Pku1218
<span style="background-color: rgb(204, 204, 204);">/* A - THE DRUNK JAILER Time Lim ...
- ASP.NET Web Service中使用Session 及 Session丢失解决方法 续
原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Sessio ...
- Asp.Net MVC4 + Oracle + EasyUI + Bootstrap
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.ht ...
- EasyMonkeyDevice vs MonkeyDevice&HierarchyViewer API Mapping Matrix
1. 前言 本来这次文章的title是写成和前几篇类似的<EasyMonkeyDevice API实践全记录>,内容也打算把每个API的实践和建议给记录下来,但后来想了下觉得这样子并不是最 ...
- MVC5+ 路由特性
MVC5+ 路由特性 概述 ASP.NET MVC 5支持一种新的路由协议,称为路由特性. MVC5也支持以前定义路由的方式,你可以在一个项目中混合使用这两种方式来定义路由. 案例 1.使用Visua ...
- C#中使用消息队列RabbitMQ
在C#中使用消息队列RabbitMQ 2014-10-27 14:41 by qy1141, 745 阅读, 2 评论, 收藏, 编辑 1.什么是RabbitMQ.详见 http://www.rabb ...
- javascript call和apply
每个函数都包含两个非继承而来的方法:call和apply. 我们可以通过这两个方法来间接调用函数.可以这样: f.call(o); f.apply(o); //o对象间接调用了f函数 这与下面的功能相 ...
- Node填坑教程——过滤器
所谓“过滤器”,只是一个概念,可以理解是一个路由,也可以理解为一个中间件.原理非常简单,就是利用匹配规则,让其有限匹配在正常的路由前面处理就行了. 比如有如下路由 app.get('/', funct ...
- DOM(二) 判断节点包含关系
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...