在项目开发的过程中总结了一下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性能优化的更多相关文章

  1. Starling性能优化技巧十五则

    Starling的性能优化要点 一.尽可能减少状态变更 如您所知,Starling使用Stage3D来渲染所有的可见对象.这就意味着所有的绘制都是GPU完成的. 现在,Starling可以一个接一个的 ...

  2. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  3. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  4. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

  5. Web性能优化:图片优化

    程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...

  6. C#中那些[举手之劳]的性能优化

    隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...

  7. JavaScript性能优化

    如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...

  8. 02.SQLServer性能优化之---牛逼的OSQL----大数据导入

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http ...

  9. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

随机推荐

  1. 新手sqlserver数据库dba需要注意的小细节

    前言:任何的优化和修改都是以业务情况为前提,可能有的写的有误或者不准确的地方,欢迎各位来拍砖. 1.在创建db的时候自增长建议设置成按MB(M)增长,步长根据业务量来设置,一般情况建议设置100-20 ...

  2. ASP.Net MVC请求处理流程

    ASP.Net MVC请求处理流程 好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人& ...

  3. 手机web下拉加载

    //需要 zepto.js支持 var page=0;//当前页 var pages=1;//总页数 var ajax=!1;//是否加载中 Zepto(function($){ $(window). ...

  4. 出现Deprecated: Function ereg_replace() is deprecated in 的原因及解决方法

    在 php5.3环境下运行oscommerce,常常会出现Deprecated: Function ereg() is deprecated in...和Deprecated: Function er ...

  5. Linux开源模块迁移概述暨交叉编译跨平台移植总结--从《嵌入式Linux驱动模板简洁和工程实践》

    本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义 ...

  6. 快速构建Windows 8风格应用7-页面视图概览

    原文:快速构建Windows 8风格应用7-页面视图概览 本篇博文主要介绍Windows 8风格应用中包含哪些视图.Visual Studio 2012和模拟器中如何开发和调试不同的页面视图.页面视图 ...

  7. C# 解析bt种子

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.C ...

  8. automake/autoconf的简单例子

    参考文章1:http://loftor.com/archives/automake.html 参考文章2:http://www.blogjava.net/huyi2006/articles/18790 ...

  9. 基于MEF的插件框架之总体设计

    基于MEF的插件框架之总体设计 1.MEF框架简介 MEF的全称是Managed Extensibility Framework(MEF),其是.net4.0的组成部分,在3.5上也可以使用.熟悉ja ...

  10. iis与 asp.net管道(asp.net应用程序什么周期)

      iis5和iis6.0下面,把iis的管道和asp.net管道进行了隔离,带来了一些局限和不足. 比如: 1.iis和asp.net之间有一些相同的操作.比如:身份认证. 2.动态文件和静态文件的 ...