一起來玩鳥 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 ...
随机推荐
- 转:布局【ViewGroup】
转: http://www.cnblogs.com/leehyuan/p/3389527.html 像素单位的变化:是用dip,而不是px,主要用于宽高的设置 在Android中支持的描述大小区域的类 ...
- Django-内置Admin
Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...
- [Leetcode Week8]Subsets
Subsets 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/subsets/description/ Description Given a set ...
- python 多进程multiprocessing 模块
multiprocessing 常用方法: cpu_count():统计cpu核数 multiprocessing.cpu_count() active_children() 获取所有子进程 mult ...
- mybatis-config.xml的解释(zz)
<!-- xml标准格式 --><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- 基于percona-monitoring-plugins实现Zabbix的MySQL多端口自动发现监控
https://blog.csdn.net/u013820054/article/details/50931793
- [BZOJ4553][Tjoi2016&Heoi2016]序列 cdp分治+dp
4553: [Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 260 Solved: 133[Sub ...
- ajaxfileupload异步上传文件
ajaxfileupload插件可以以异步方式上传文件(其实现:iframe),不像传统那样需要刷新,下面就介绍下其使用 1.HTML部分(先引入jquery): <!DOCTYPE html& ...
- django 实现自定义认证
1.Django自带用户认证系统 Django自带用户认证系统,这个系统支持访问控制.注册用户.关联创建者和内容等:在开发用户认证功能时的时候,可以使用Django自带用户认证系统实现: A.相关表 ...
- HDU 6357.Hills And Valleys-字符串非严格递增子序列(LIS最长非下降子序列)+动态规划(区间翻转l,r找最长非递减子序列),好题哇 (2018 Multi-University Training Contest 5 1008)
6357. Hills And Valleys 自己感觉这是个好题,应该是经典题目,所以半路选手补了这道字符串的动态规划题目. 题意就是给你一个串,翻转任意区间一次,求最长的非下降子序列. 一看题面写 ...