A闪的 BLOG 技术与人文
当你第一次接触使用Starling框架的时候你可能会觉得非常的不舒服或者不适应。因为GPU加速渲染的工作模式与传统CPU渲染模式完全不同,你肯能再也不同使用shape对象这样的概念,你现在能接触到的内容则是数据、算法和AGAL。很碰巧的是现在你仍然可以使用诸如Spriie这样的对象来创建基于GPU加速的图形图像内容,Starling在发布之处就是围绕一个还原久编成习惯的概念而形成的。与传统开发稍有不同的是,你仍然要避免与stage层冲突。在一些情况下你还是需要选择传统的CPU方式来制作一些可视化内容,比如复杂UI等等。
在这篇文章里我还不会想你展示最复杂的Starling技术的使用,我会以最简单的一些内容来想大家介绍Starling中的一些常用特性。先上一段简单的代码,我们来了解一下在引擎最初运行的时候要访问的一些接口内容。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode;在这段代码总出现了一个Starling类的实例,实际上这个类就是该框架的主入口,我们通过它来对我们GPU加速进行全局控制。如果你想直接开启GPU加速,那么执行start函数之后你就可以放心的看到你先要的内容,但是第一次制作你会发现出现这样的内容。import starling.core.Starling; [SWF(width="500", height="400", frameRate="60", backgroundColor="#000000")] public class starlinggame extends Sprite { private var _myStarling:Starling; public function starlinggame() { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; // this._myStarling = new Starling(GameMain,stage); this._myStarling.start(); } }
}
<renderMode>direct</renderMode>进行更改之后,你便可以正常启动你的GPU加速了,这次点击debug按钮就会看到如下效果。
到目前为止,你看到的内容实际上只是一片黑色,但是原有的错误信息已经不存在了。现在我们可以通过拆分类文件来分离我们GPU和CPU逻辑内容,但在这之前我们需要对Starling的一些属性进行简单的介绍。
关于antiAliasing这个图像渲染质量的选项我目前还不想讲解太多,因为只是一个数字而已,最后我会通过一些效果想大家说明如何合理的设置这个属性在保证效率的同时达到最理想的画面质量。
目前我希望你关注的属性有下面几个enableErrorChecking,handleLostContext,multitouchEnabled。这三个属性全部都是功能性级别的。第一个你需要知道是否开启内置的debug系统,开启之后会在你程序运行的时候将所有错误信息打印出来,当然开启debug功能会让你的程序性能有所下降,但不是级别性的下降。handleLostContext是令我非常兴奋的功能,GPU加速的支持在某些条件下会丢失,例如windows进入了锁屏界面,那么当用户再次开启的时候我们需要对原有的状态进行恢复,那么好吧,交给他来执行。最后一个也是我要说明的一点,很多人认为Starling不适合在移动设备上面使用,而恰恰相反的是,Starling默认集成了多点触摸的这种功能。这就为我们在移动领域开发带来了极大方便。
目前先介绍到这里,在下一篇中我会做一个极限压力测试,我将使用最新版本的AIR3.2和Starling 1.0来调试一个渲染加速反面的demo,以便让大家理解在这些操作中我们会遇到这么样的问题。