開場

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. Appium===Appium+Python API(转)

    Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...

  2. pool.map的第二个参数想传入多个咋整?

    from functools import partial from multiprocessing import Pool as ThreadPool pageurls=[] if maxpage: ...

  3. iOS开发-Runloop详解(简书)

    不知道大家有没有想过这个问题,一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静止了一样,不会自发的有任何动作发生,但是如果我们点击界面上的一个按钮,这个时候就会有对应的按钮响应事件 ...

  4. js 函数分类2

    js 通用监听函数实现 // 把所有方法封装到一个对象里面,充分考虑兼容写法 var EventUtil = { // 添加DOM事件 addEvent: function(element, type ...

  5. unixbench安装使用

    UnixBench是一个类unix系(Unix,BSD,Linux)统下的性能测试工具,一个开源工具,被广泛用与测试linux系统主机的性能.Unixbench的主要测试项目有:系统调用.读写.进程. ...

  6. mybatis获取表信息,以及遍历ResultSet

    @RunWith(SpringRunner.class) @SpringBootTest public class BravolinksCrmServerApplicationTests { @Aut ...

  7. 使用navicat修改Mysql默认密码

    本质就是修改数据库mysql里面的数据表user一个字段,并执行如下一句mysql语句: UPDATE user SET password=PASSWORD('密码') WHERE user='roo ...

  8. PHP的文件操作类

    <?php class file { function file() { die("Class file can not instantiated!"); } //创建目录 ...

  9. Cookie和session的简单理解和应用

    一.COOKIE 1.http协议建立连接后,无法保持状态:但实际情况,网站和服务器要进行通讯,需要“保持状态”,因此cookie应运而生:浏览器登陆web服务器后, Web 服务器产生包含有关用户的 ...

  10. POJ 1988 Cube stacking【并查集高级应用+妙用deep数组】

    Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)identical cubes ...