您的位置:首页 > 产品设计 > UI/UE

使用Starling框架在Flash Builder里搭建第一个GPU加速的2D项目

2011-09-24 19:36 429 查看
本文内容:

Starling是Adobe发布的ActionScript 3.0框架,它构建于Flash Player 11的Stage3D API之上,将面向显卡的编程接口封装为一套可以被ActionScript开发者迅速掌握的API,让不熟悉3D环境的开发者们可以利用GPU来渲染2D项目。本文将对如何在Flash Builder 4.5里配置和搭建一个Starling项目做详细的介绍。

准备工作:

测试Starling之前,你需要先确保你的电脑显卡支持编程,如PC下的DirectX,Mac下的OpenGL。

然后下载下面的必备工具和文件:

Flash
Builder 4.5

Flex
SDK 4.5.1

playerglobal.swc

Flash
Player 11 rc (debug)

Starling
Framework

性能测试工具Stats类库

接下来在Flash Builder 4.5里,按照以下的步骤进行配置:

1,在Flash Builder里新建一个ActionScript项目。

2,右键点击项目,选择Property。

3,在项目Property中选择ActionScript Build Path

4,在Source path里添加Starling框架中的starling/src文件夹。

5,将Starling框架文件夹中的starling/media文件夹拷贝到项目文件夹下。

6,在Source path里添加项目测试工具Stats中的src文件夹。

7,将Stats的assets文件夹拷贝到项目文件夹下。

8,将下载的Flex SDK文件夹拷贝到Flash Builder的安装目录下的sdks中。

9,进入Flex SDK的文件夹,在frameworks/libs/player下面建立一个新的文件夹,命名为11.0,并将下载的playerglobal.swc(注意命名)拷贝到该文件夹下。该playerglobal.swc包含了所有Stage3D的API。

10,在项目Property中选择ActionScript Compiler。

11,在ActionScript Compiler面板的Flex SDK version中点击Configure Flex SDKs,添加刚才拷贝的Flex SDK。回到Compiler面板,选择该SDK。

12,在Adobe Flash Player options下设置Use a specific version 11.0.0,这样Flash Builder会到SDK的11.0文件夹下寻找最新的playerglobal.swc。

*注意:有些情况下在使用了新的playerglobal.swc之后,原有的Native API丢失。针对这样的问题,需要在ActionScript Builder Path下手动添加10.2下的playerglobal.swc,同时使用两个playerglobal.swc。

13,在Compiler options下的Additional arguments中添加-swf-version 13,确保Flash Builder发布正确的SWF测试版本。

14,退出项目Property面板,在项目文件夹列表中打开html-template,右键用Open with->Text Editor打开html.template.html文件。在第48行插入一行代码:params.wmode = “direct”,确保SWF打开显卡的调用功能。

这样,Starling项目的配置工作就已经完成了。

编写第一个Starling项目

Starling基于Stage3D的底层API,将Context3D,着色器,顶点、片段这些底层代码封装起来,按照ActionScript 3.0原生类的样子包装成一套每个Flash开发者都熟悉的API。比如starling.display.Sprite,starling.display.MovieClip,starling.display.Button。我们不需要了解它们是如何从Stage3D底层API里转换而来,只要按照我们原有的开发习惯,就可以很容易的把显卡资源用在新的项目上。

通过上面的配置,我们已经建立了一个ActionScript项目。首先我们需要建立一个Starling的主类,我们可以这样理解,在Starling的世界中,有一个最基本的显示舞台,所有Stage3D的东西都是被加载到这个舞台上。这个主类需要继承starling.display.Sprite:

1
2

import starling.display.Sprite;
public class Game extends Sprite

然后在项目主应用程序中,新建一个starling.core.Starling的实例,通过下面的代码将Starling的主类Game实例化:

1
23
4
5
6
7
8
9
10

import starling.core.Starling;
...
private var myStarling:Starling;
...
public function StartUp(){
myStarling = new Starling(Game, stage);
//这行代码用来调节渲染的品质,值越高品质越好,但性能越低
myStarling.antiAliasing= 1;
myStarling.start();
}

在Starling主类Game中,可以按照原有的开发习惯来建立显示对象,比如我打算做一个抛字母的效果,可以完全按照原来的开发思路来做。



点击查看效果

这里不对效果的开发过程做解释,非常的简单,而且不是本文的重点。我主要列举两个创建显示对象实例的代码:

创建一个图片:

1
23
4
5
6
7
8

import starling.display.Image;
import starling.textures.Texture;
....
[Embed(source="xxxx.png")]
private var ringClass:Class;
....
//使用Texture给图片添加材质,此例的材质是一个嵌入的PNG图片。
var image:Image = new Image(Texture.fromBitmap(new ringClass()));

创建一个文本:

1
23
4
5

import starling.text.TextFIeld;
import starling.textures.Texture;
....
//创建一个TextField文本,参数分别为宽,高,内容,字体,字号,颜色等等
var textfield:TextField = new TextField(80,80,"Hello world!","Impact",50,0x0);

如列出的代码例子可见,Starling的结构和使用方法和以往的ActionScript开发没有什么区别。由于该框架是开源框架,所以对框架的实现本质感兴趣的朋友可以自行深入探讨Stage3D的底层API。

本文例子下载:

FirstExample.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: