Starling优化技巧二

前面介绍了Starling中三种(着色处理、画家算法、纹理图集)图片优化的技巧,下面介绍几种其他方法来优化你的Starling项、项目性能:

强大的Sprites

    Sprite容器中有一个Flatten方法,它可以帮你减少GPU对帧的处理。如果您的游戏中有一些内容是静态的,并且不会发生(或很少)改变,就可以调用这个Sprite容器的 Flatten方法。Starling将会预处理它的子元件,并上传它们的数据到GPU。在后续的帧中,它们就可以马上被呈现,而且不需要任何额外的GPU处理,也无需向GPU上传新的数据。Sprites非常强大,Sprites能够极大的减少cpu的负载极大的提高你Flash游戏的性能!

QuadBatch

    Sprites虽然强大也能非常快速的使用,但是它同样会带来一些其他的负担。主要有两方面:一 当您在Sprite上添加了一个对象,它们将派发”ADDED”和”ADDED_TO_STAGE”事件,如果有很多子元件需要添加,这可能也是不小的开销。二 对于任何的显示对象容器来说,一个特定的子元件只能添加一次。QuadBatch是解决这些限制的最好的办法,它是Starling的一个底层类。下面把它的工作原理写下来:

var quadBatch:QuadBatch = new QuadBatch(); 
var image:Image = new Image(texture); 
quadBatch.addImage(image);    
For (var i:int=0; i<100; ++i) 
{ 
    image.x += 10; 
    quadBatch.addImage(image); 
}

    通过使用这样的处理,您可以重复添加相同的图像!此外,它不会引发任何事件调度。然而事务都有两面性,这样做也有一些缺点:您添加的所有的对象必须具备相同的状态(比如:使用同一个纹理图集)。您添加到 QuadBatch 的第一个图像决定了它的状态。您不能再改变状态,除非完全重置这个 QuadBatch 。您只能添加 Image Quad, 或  QuadBatch 类的实例。由于这些原因,它仅适用于一些特定的场景(比如位图字体类,就直接使用了四边形批次)。在这些情况下,它肯定是最快的选择。您将找不到一个更有效的方式来呈现 Starling 对象。

位图字体

    使用位图字体不会占用任何额外的纹理内存,除了它们所需的原始纹理;同时使用位图字体的文本框,创建和更新都是非常快速的。文本框支持两种不同的字体:True Type字体和位图字体。TrueType字体最容易使用:只需嵌入所需的“ttF”文件,您就大功告成了。为静态文本框包含数百个字符,这是一个很好的和快速的选 择。Starling会将文本渲染成位图,显示文本的时候就像一个纹理一样。对于重复改变的短文本(比如分行显示),这样处理还是挺慢的。如果您的游戏需要显示的文本中包含许多非ASCII字符(如中文或阿拉伯文),TrueType字体可能是您唯一的选择。位图文本只是受限于它们的纹理大小。

容器点击处理

    当年你移动光标时,Starling会自动寻找哪一个容器对象可以被点击。这项操作是一项昂贵的操作,因为它需要遍历所有的显示对象,并调用hitTest方法。因此,如果您不需要一个对象被触碰,将它设置为“untouchable”是非常有帮助的。最好是在容器上进行禁用:这样,Starling就不会遍历它的子元件。

你可以通过一下方法处理容器点击:

// 方案一: 
For (var i:int=0; i<container.numChildren; ++i) 
    containter.getChildAt(i).touchable = False; 
   
// 方案二: 
container.touchable = False;
// 很明显,第二种方案较第一种要好。

创建对象处理

    大量的临时对象不仅占用内存并且需要由垃圾收集器进行清理,这会使你的游戏在应用过程中经常出现你不想要看到的情况“卡壳”。下面给大家推荐一个好的处理临时对象的方法:

var point:Point = new Point(); 
For (var i:int=0; i<10; ++i) 
{ 
    point.setTo(i, 2*i); 
    doSomethingWith(point); 
}

  大家可以去试用一下。

  上面这些方法旨在提高你Flash项目的性能,让你的项目不管是Flash网站还是Flash游戏都能给用户带来一个非常高的用户感觉——这是我们做项目的重要目标。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值