在项目开发的过程中总结了一下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. [LeetCode]Copy List with Random Pointer &Clone Graph 复杂链表的复制&图的复制

    /** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label ...

  2. 在线Youtube视频下载,修改文本,剪切制作动画的最新方法

    刚刚(减去编写本文章的时间,大概20分钟前吧)在看国外最新技术资讯的时候发现有个方法可以让我们快速去下载Youtube上面的视频,不敢独享,我自己都没有怎么玩就所以立刻post上来广而告之,希望对大家 ...

  3. phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪

    本文讲述laravel-ide-helper的安装方法.phpstorm安装了laravel-ide-helper后可以实现代码提示.跟踪和自动补全,减少查看API文档的次数,提高开发效率. lara ...

  4. How to:installshield安装包怎样才能出现选择路径的界面?

    原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装 ...

  5. ASP.NET MVC局部视图

    使用ASP.NET MVC局部视图避免JS拼接HTML,编写易于维护的HTML页面   以前使用ASP.NET WebForm开发时,喜欢使用Repeater控件嵌套的方式开发前台页面,这样就不用JS ...

  6. sb2-admin

    近期开发中遇到的问题总结   最近准备把后台管理系统重新设计开发下,使用了bootstrap,在网上找了个漂亮的后台模板:sb2-admin,在使用中遇到了不少问题,总结下,以免以后忘记. 1.EF5 ...

  7. hadoop搭建开发环境及编写Hello World

    hadoop搭建开发环境及编写Hello World   本文地址:http://www.cnblogs.com/archimedes/p/hadoop-helloworld.html,转载请注明源地 ...

  8. C# 解析bt种子

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

  9. SSH简介

    一.什么是SSH? Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定:SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上 ...

  10. iOS UIWebView键盘操控

    +-------------------------+ 假设你有以下的问题,也许这篇文章将帮助你. 键盘遮盖了UIWebView. 怎样拖动UIWebView来移除键盘. 键盘出现时UIWebView ...