開場

Starling Framework是一套Flash 2D遊戲開發"工具",是使用Flash最新的Stage3D API建構出來的一套Framework。最大優點在於使用GPU做圖形的運算,讓Flash的效能能夠到之前的1000倍(官方說法)!另一大優點是易學,使用跟Flash native API類似的類別,方法,架構等,讓原本熟悉Flash的開發者可以很快的上手。

提到Starling Framework,不得不提一下另外一隻鳥:Sparrow Framework,是一套iOS上的遊戲開發Framework,特點是"inspired by the Flash API",雖然是使用Objective-C,但很多概念都跟使用Flash API很像。而Starling Framework則是"a port of Sparrow to Flash",把在iOS上成功的經驗移植回Flash,結果就變成了"port a Flash-port back to Flash"。

原理

前面提到的Stage3D API,相信大家都看過Flash Player 11跑出來的3D效果,效能快1000倍真的不是隨便說說的。但Stage3D顧名思義,不就是跟3D有關的API,如何打造出2D的Framework?原理其實很簡單,大家知道3D的構成,基本上就是由一堆三角形建構出3D的模組,然後再加上貼圖,就成了我們看到的3D物件(當然還有打光等等的就先不談)。而Starling的基本,就是由兩個三角形組成一個四邊形Quad,再貼上材質Texture,就成了我們看到的2D物件啦。畫三角形跟貼材質就是GPU很擅長的工作,交給它,Flash就比以前快1000倍啦。既然原理跟3D很像,在使用上,Starling跟其他的3D Framework,例如PV3D,Away3D等等的View一樣,有自己的一個世界,一個顯示範圍,也有自己的一套DisplayList。在Starling裡,有自己的Stage,所有的DisplayObject都在這個Stage底下。在Flash Player 11裡面,顯示的層級大概如下圖:

Starling的DisplayObject都會在Stage3D那一層,而Flash native的DisplayList則在上方。由於Starling的手冊以"native"來稱呼Flash原有的API或元件,用來跟Starling區別,因為很多類別同名但卻是不同的體系,接下來我也會以這個字來區分(其實前面已經開始用啦!)。

很像但卻不一樣

一開始提到Starling除了效能外,另一大優點是使用上跟原來的Flash API很像。但這也是一開始學Starling要特別注意的:很像意味著其實是不一樣的!由文件可以看出,Starling有自己的Stage,Event,Sprite,MovieClip等等的類別,注意他們的繼承樹,從最基本的Object以後,就完全是自己的類別了。所以即使很多屬性跟方法都跟native的很像,但是Starling的DisplayObject跟,native的DisplayObject不一樣,無法加到native的DisplayList底下;Starling的Event跟native的Event是兩個系統,它沒有capture phase,bubble出去也不會被native的Stage收到;Starling的MovieClip是個DisplayObject,但卻不是DisplayContainer,所以沒有addChild等方法來加東西進去,也沒時間軸的概念,靠的是一組Textures變換,來達到動畫效果,所以也可以想像成它只能搭配SpriteSheet來做逐格動畫;Starling的Sprite跟native的比較像,但要注意所有的DisplayObject的rotation屬性的單位都是弧度而不是角度。玩Starling一開始就要認清楚,他是活在自己的世界裡。頂多透過nativeOverlay與nativeStage來跟外面的世界連接。萬一真的需要在同一個as文件裡用到兩個同名的類別,則必須使用完整的package路徑來區別,例如flash.display.MovieClip與starling.display.MovieClip。

相關資料

列出一些我這幾天參考的資料與蒐集到的資源:
官網:所有東西的起點。
下載:常常修正或添加新功能,github這邊可以找到最新的版本。
文件:當然一定要掃過一遍。但可能有些新增的屬性或方法沒放上去。
Tutorial Book:ByteArray的介紹文,一些Demo,重點是裡面有個PDF說明書,一定要下載下來好好看一下,裡面說明了很多細節,程式碼教學等等。雖然有121頁,但花個一天應該是可以看的完。
介紹影片:要快速來個Hello world可以看這影片來學,尤其是使用Flash Builder來開發的。
論壇:卡關的時候請到這。
FlashDevelop與Flash Player 11:nutsu的安裝設定教學。目前FlashDevelop 4.0 RC2自動下載Flex SDK4.5.1與AIR3.0已經是最新的了。注意發佈設定[Compiler Options] tab的[Advanced/Additional Compiler Options]這地方要加 -swf-version=13 的設定。
FlashDevelop的Hello world:Abiyasa的Hello world教學,使用FlashDevelop的看這邊。
外掛:很多熱心人士寫的Starling外掛或相容的API。
粒子效果外掛:下載了才能使用粒子效果的功能。
Particle Designer:官方推薦的粒子產生器,要錢的,但也可輸出給iOS用,限Mac OS使用。有開發iOS App的可以考慮買。
線上粒子效果產生器:好用!
GlyphDesigner:Bitmap Fonts產生器,要錢,Mac版。
Bitmap Font Generator:免錢,Windows版,陽春但可用。
TexturePacker:產生SpriteSheet與Texture atlas的工具,要錢,有分Windows與Mac版,有Essential版可以免費使用,但swf import的部份屬於需要付費的功能,所以輸出時會隨機把兩格貼上奇怪的文字圖,但測試時可以先拿來玩。開發者或是有寫部落格的可以試著申請免費授權看看。似乎有聽說以後Flash要加上Sprite Sheet的功能,若不是很想花錢的可以注意相關的消息。

一起來玩鳥 Starling Framework 簡介的更多相关文章

  1. 一起來玩鳥 Starling Framework(2)效能測試以及Image與Texture

    上一篇我們放了一個Quad與TextField在舞台上慢慢轉.眼尖的可能會發現轉起來邊緣有點鋸齒,這可以透過設定Starling的反鋸齒來解決,在Main.as裡,新增了_starling之後,可以加 ...

  2. 一起來玩鳥 Starling Framework(1)一定要的Hello World!

    雖然已經一堆Hello World的介紹文章跟影片了,但中文資料畢竟是比較少,所以不能免俗的來一篇中文版Hello World.首先開啟一個AS3.0專案,fps不用客氣,設為60,Starling很 ...

  3. 一起來玩鳥 Starling Framework(5)Multi-Touch

    這篇來談談Starling的Multi-Touch.前一篇也提到,Multi-Touch一樣是監聽TouchEvent.TOUCH,然後由TouchEvent的e.getTouches()取回多點的資 ...

  4. 一起來玩鳥 Starling Framework(7)MovieClip

    承上一篇,我們接著來講最後一個IAnimatable類別,MovieClip.Starling的MovieClip跟native的MovieClip不太一樣,它只能接收一個Vector.<Tex ...

  5. 一起來玩鳥 Starling Framework(3)Button!

    週末夜來介紹個簡單的DisplayObject就好.不論是在電腦上或行動裝置上,跟使用者互動次數最多的,大概就是按鈕了.因此,Starling有個Button類別,來做出這個常用的互動元件. 同樣是因 ...

  6. 一起來玩鳥 Starling Framework(6)Juggler、Tween、以及DelayCall

    這篇開始來講Starling裡的Animation.Juggle是個簡單的Class,用來控制動畫的進行.他負責管理經由add()加進來的實現IAnimatable介面的物件,然後當Juggler的a ...

  7. 一起來玩鳥 Starling Framework(4)TouchEvent,Touch,以及TouchPhase

    這一篇來介紹一下TouchEvent.我們先來談單點的touch,下一篇再介紹MultiTouch.翻過Starling文件的應該會發現,Starling裡面沒有MouseEvent,而是整合在Tou ...

  8. 一起來玩鳥 Starling Framework(9)Particle

    最後,來看看Starling裡一個很炫的功能:Particle.Particle屬於extension,所以要另外下載檔案:Starling-Extension-Particle-System.下載之 ...

  9. 一起來玩鳥 Starling Framework(8)BitmapFont

    所謂BitmapFont,就是事先將我們會用到的字型,會用到的字,輸出成一張圖片,類似Sprite sheet,以及一個xml格式的Data file,然後我們一次將這文字圖片轉成Texture,up ...

随机推荐

  1. [Leetcode Week6]Linked List Cycle II

    Linked List Cycle II 题解 题目来源:https://leetcode.com/problems/linked-list-cycle-ii/description/ Descrip ...

  2. HDU2444(判断是否为二分图,求最大匹配)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  3. 开源的zip_unzip库

    zip/unzip源码交叉编译 http://blog.chinaunix.net/uid-20288609-id-10016.html zlib 1.2.11 http://www.zlib.net ...

  4. servlet(4) - servletAPI - 小易Java笔记

    Servlet规范核心类图 1.请求和响应对象 ==> HTTP协议包含请求和响应部分. ==> HttpServletRequest就代表着请求部分 ==> HttpServlet ...

  5. python 复习 4-1 函数、参数、返回值、递归

    函数 完成特定功能的一个语句组,这个语句组可以作为一个单位使用,并且给它组语句取一个名子,即函数名 可以通过函数名在程序不同地方多次执行,即函数调用 预定义函数(可以直接使用) 自定义函数(自编写的) ...

  6. web开发文档整理

    django 1.11版中文文档 django 1.11版英文文档 Redis命令参考文档 Axios中文文档 Axios英文官方文档 Django REST Framework官方文档 Vue.js ...

  7. cpu中的缓存和操作系统中的缓存分别是什么?

    cpu中的缓存和操作系统中的缓存分别是什么? 在操作系统中,为了提高系统的存取速度,在地址映射机制中增加了一个小容量的联想寄存器,即块表.用来存放当前访问最频繁的少数活动页面的页数.当某用户需要存取数 ...

  8. kafka consumer 代码示例

    使用者小组 使得许多进程的多台机器 在逻辑上作为一个单个的使用者 出现. 我们使用中,一种常见的情况是,我们按照逻辑划分出多个使用者小组,每个小组都是有作为一个逻辑整体的多台使用者计算机组成的集群. ...

  9. solr requestHandler

    使用哪一个handler: 1. 可以通过在url中追加有名字的handler(以 ' / ' 开头命名)的名称来指定使用哪一个handler. 如: <requestHandler name= ...

  10. python的内存管理机制(zz)

    本文转载自:http://www.cnblogs.com/CBDoctor/p/3781078.html 先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计 ...