一起來玩鳥 Starling Framework 簡介
開場
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 簡介的更多相关文章
- 一起來玩鳥 Starling Framework(2)效能測試以及Image與Texture
上一篇我們放了一個Quad與TextField在舞台上慢慢轉.眼尖的可能會發現轉起來邊緣有點鋸齒,這可以透過設定Starling的反鋸齒來解決,在Main.as裡,新增了_starling之後,可以加 ...
- 一起來玩鳥 Starling Framework(1)一定要的Hello World!
雖然已經一堆Hello World的介紹文章跟影片了,但中文資料畢竟是比較少,所以不能免俗的來一篇中文版Hello World.首先開啟一個AS3.0專案,fps不用客氣,設為60,Starling很 ...
- 一起來玩鳥 Starling Framework(5)Multi-Touch
這篇來談談Starling的Multi-Touch.前一篇也提到,Multi-Touch一樣是監聽TouchEvent.TOUCH,然後由TouchEvent的e.getTouches()取回多點的資 ...
- 一起來玩鳥 Starling Framework(7)MovieClip
承上一篇,我們接著來講最後一個IAnimatable類別,MovieClip.Starling的MovieClip跟native的MovieClip不太一樣,它只能接收一個Vector.<Tex ...
- 一起來玩鳥 Starling Framework(3)Button!
週末夜來介紹個簡單的DisplayObject就好.不論是在電腦上或行動裝置上,跟使用者互動次數最多的,大概就是按鈕了.因此,Starling有個Button類別,來做出這個常用的互動元件. 同樣是因 ...
- 一起來玩鳥 Starling Framework(6)Juggler、Tween、以及DelayCall
這篇開始來講Starling裡的Animation.Juggle是個簡單的Class,用來控制動畫的進行.他負責管理經由add()加進來的實現IAnimatable介面的物件,然後當Juggler的a ...
- 一起來玩鳥 Starling Framework(4)TouchEvent,Touch,以及TouchPhase
這一篇來介紹一下TouchEvent.我們先來談單點的touch,下一篇再介紹MultiTouch.翻過Starling文件的應該會發現,Starling裡面沒有MouseEvent,而是整合在Tou ...
- 一起來玩鳥 Starling Framework(9)Particle
最後,來看看Starling裡一個很炫的功能:Particle.Particle屬於extension,所以要另外下載檔案:Starling-Extension-Particle-System.下載之 ...
- 一起來玩鳥 Starling Framework(8)BitmapFont
所謂BitmapFont,就是事先將我們會用到的字型,會用到的字,輸出成一張圖片,類似Sprite sheet,以及一個xml格式的Data file,然後我們一次將這文字圖片轉成Texture,up ...
随机推荐
- 如何在 Linux 上锁定虚拟控制台会话
当你在共享的系统上工作时,你可能不希望其他用户偷窥你的控制台中看你在做什么.如果是这样,我知道有个简单的技巧来锁定自己的会话,同时仍然允许其他用户在其他虚拟控制台上使用该系统.要感谢 Vlock(Vi ...
- HTML5初学---坦克大战基础
让小球动起来,根据键盘的W(上),D(右),S(下),A(左):键的点击移动小球 <!DOCTYPE html> <html> <head> <meta ch ...
- 【 Tomcat 】tomcat8.0 基本参数调优配置
1.优化内核及TCP连接: fs.file-max = # 系统文件描述符总量 net.ipv4.ip_local_port_range = # 打开端口范围 net.ipv4.tcp_max_tw_ ...
- linux环境下,双击直连ping私有地址时候出现Destination host unreachable 解决办法
在确保网线无故障的情况下,采取以下步骤 1.查看本机的hostname vim /etc/sysconfig/network 2.编辑/etc/hosts vim /etc/hosts 加入以下 ...
- OOM异常 Java内存溢出
1.OutOfMemoryError 抛出异常后先确定是堆溢出还是栈溢出 堆溢出:java.lang.OutOfMemoryError: Java heap space 堆出现OOM(标志就是Java ...
- MATLAB作图方法与技巧(二)
作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...
- [BZOJ1475]方格取数 网络流 最小割
1475: 方格取数 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1025 Solved: 512[Submit][Status][Discuss] ...
- HDU 6342.Problem K. Expression in Memories-模拟-巴科斯范式填充 (2018 Multi-University Training Contest 4 1011)
6342.Problem K. Expression in Memories 这个题就是把?变成其他的使得多项式成立并且没有前导零 官方题解: 没意思,好想咸鱼,直接贴一篇别人的博客,写的很好,比我的 ...
- HDU 6315.Naive Operations-线段树(两棵树合并)(区间单点更新、区间最值、区间求和)+思维 (2018 Multi-University Training Contest 2 1007)
6315.Naive Operations 题意很好理解,但是因为区间求和求的是向下取整的a[i]/b[i],所以直接分数更新区间是不对的,所以反过来直接当a[i]==b[i]的时候,线段树对应的位置 ...
- Codeforces Round 253 (Div. 2)
layout: post title: Codeforces Round 253 (Div. 2) author: "luowentaoaa" catalog: true tags ...