一起來玩鳥 Starling Framework(1)一定要的Hello World!
雖然已經一堆Hello World的介紹文章跟影片了,但中文資料畢竟是比較少,所以不能免俗的來一篇中文版Hello World。首先開啟一個AS3.0專案,fps不用客氣,設為60,Starling很快的。當然要發佈的版本是Flash Player 11。使用FlashDevelop的需要打開Project->Properties,如下圖的地方加上:-swf-version=13設定輸出的swf版本:

FlashBuilder的使用者請參考官網的介紹影片。
接著來看程式碼。假設Document Class為Main.as,我們直接把程式碼列出來如下:
package pj
{
import flash.display.Sprite;
import flash.events.Event;
import pj.game0.Game0;//Hello world
import starling.core.Starling;
publicclassMainextendsSprite
{
privatevar _starling:Starling;
publicfunctionMain():void
{
if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
privatefunction init(e:Event=null):void
{
      removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
Starling.multitouchEnabled =true;//允許多點觸控
      _starling =newStarling(Game0, stage);//新增一個Starling
      _starling.simulateMultitouch =true;//允許多點觸控模擬,ctrl + 滑鼠拖曳可以叫出來
      _starling.start();//讓Starling開始跑
}
}
}
程式碼很簡單,如果不設定多點觸控的話只要兩行!關於多點觸控的設定很簡單,我們這裡也用不到,所以先跳過,我們直接看新增一個Starling實體:
_starling = new Starling(Game0, stage);//新增一個Starling
第一個參數是rootClass,直接給一個Class的名稱,這個Game0我們等等再去看。他的角色就像是Starling版的Document Class,所有Starling裡的Display Object都從他開始加。第二個傳入native的stage。後面還可以加第三個參數viewPort,給他一個Rectangle,用來設定Starling Render的範圍,預設為stage大小。第四個Stage3D通常用預設的就好。第五個renderMode預設為"auto",我們可以設定成Context3DRenderMode.SOFTWARE來強迫電腦使用software render的情況下來看Starling的運行狀況。這可以幫助我們了解在較差的設備上運作時會是怎樣。基本上只有前兩個必填。接著我們就呼叫start()方法,就可以讓Starling開始了。當然這時候發佈會發生錯誤,因為Game0還沒寫。
接著來介紹Game0。開一個新的as檔,讓它繼承Sprite。注意,是Starling版的Sprite。從這裡面開始,我們用到的Display Object或Event都是Starling版的。列出程式碼來說明:
package pj.game0 
{
import fr.kouma.starling.utils.Stats;//Starling版的Stats
import starling.display.Quad;
import starling.display.Sprite;
import starling.events.Event;
import starling.text.TextField;
import starling.utils.HAlign;
import starling.utils.VAlign;
publicclassGame0extendsSprite
{
privatevar _container:Sprite;
privatevar _box:Sprite;
privatevar _quad:Quad;
publicfunctionGame0()
{
super();
      addEventListener(Event.ADDED_TO_STAGE, init);//一樣有ADDED_TO_STAGE Event可用
}
privatefunction init(e:Event):void
{
      removeEventListener(Event.ADDED_TO_STAGE, init);
_container =newSprite();//為了確保內容都在Stats下方,另外在用一個容器來裝我們的元件
      addChild(_container);//加到場景上一樣是addChild
      addChild(newStats());//加上Stats
_box =newSprite();//新增一個容器,等等要放入一個四邊形跟文字
var quad:Quad=newQuad(200,200,0x000099);//新增一個基本的四邊形,設定基本顏色為藍色
      quad.setVertexColor(0,0xFF0000);//左上點設為紅色
      quad.setVertexColor(1,0x00FF00);//右上點設為綠色
      quad.setVertexColor(2,0x0000FF);//左下點設為藍色
      quad.setVertexColor(3,0x000000);//右下點設為黑色
var text:TextField=newTextField(200,200,"哈囉, 世界!","新細明體",16,0xFFFFFF,true);
//新增一個文字框
      text.hAlign =HAlign.CENTER;//水平置中
      text.vAlign =VAlign.CENTER;//垂直置中
      text.autoScale =true;//讓文字字級自動縮小以符合較小的寬高
      _box.addChild(quad);//在_box內加入四邊形
      _box.addChild(text);//在_box內加入文字
      _box.pivotX =100;//設定_box的註冊點位置
      _box.pivotY =100;//設定_box的註冊點位置
      _box.x = stage.stageWidth >>1;//_box設定在舞台中央
      _box.y = stage.stageHeight >>1;//_box設定在舞台中央
      _container.addChild(_box);//_box加到_container裡面
      addEventListener(Event.ENTER_FRAME, onEnterFrame);//一樣有ENTER_FRAME Event可用
}
privatefunction onEnterFrame(e:Event):void
{
      _box.rotation +=0.01;//不斷旋轉_box,這裡加的量單位為弧度
}
}
}
幾乎每一行都加註解了。首先為了要了解Starling的效能,我們要裝一下Starling版的Stats。我們也可以在Main.as那邊加個native版的Stats。不過據說同時使用native與Starling的Display Object在Android上會讓fps只能到30,所以我們還是先裝一下Starling版的。
然後一開始一樣有ADDED_TO_STAGE事件讓我們知道是否被加到Starling stage上了,所以程式的開頭跟寫native API沒什麼差別,只要記得Import的是starling package底下的類別就好。
接著我們加個_container跟Stats到場景上。接著我們想放個方塊,裡面放個文字來看看。這一整個東西我們放在_box裡面,所以我們新增一個Quad,它是Starling裡很基本的一個Display Object,前一篇提過,Starling就是用兩個三角形拼成一個Quad,加上材質,來產生GPU 2D加速的效果。Quad只能指定顏色材質,也可以使用setVertexColor()來指定色個端點的顏色,然後會自動產生漸層。第一個參數vertexID為0~3,分別為左上,右上,左下,右下四個端點。第二個參數是顏色。
接著我們新增一個TextField,設定寬高為200,顯示文字為"哈囉,世界!",我們一開始就說了,這篇要來個中文版的Hello World。設定字體為新細明體,字級16,最後一個true代表使用粗體。可以使用hAlign與vAlign來設定水平與垂直的對齊方式。autoScale設定為true可以讓文字內容超過原本寬高設定時,會自動縮小字級以符合原本的寬高位置。關於TextField的運作,Starling其實是開一個native的TextField然後依照Starling TextField的設定去改變這個native TextField,然後將它draw成材質給GPU使用,再貼到Starling裡面。而整個Starling會重複使用這一個native TextField,而不是一直開新的來使用。
四邊形跟文字都設定好了,我們就可以把它加到_box裡面。我們可以設定Sprite的註冊點,讓旋轉縮放等效果可以以_box的中心來變化,而不是左上角。然後將_box的位置設定到舞台的中央,加到_contaner裡面,這樣我們就看的到它了。
最後,我們加個ENTER_FRAME Event讓_box一直旋轉。在所有的Starling Display Object,rotation的單位都是以弧度來計算,這是因為Starling的堂哥Sparrow是以弧度來計算的關係。
最後,我們的html上面,要記得將wmode設定為"direct",這是Flash Player 11新的幾個wmode之一。設定為"direct"才能看到Stage3D的效果。如果設定錯,Starling會在畫面上顯示一段訊息告訴你wmode設定錯了。設定好就可以發佈來看了。

一起來玩鳥 Starling Framework(1)一定要的Hello World!的更多相关文章
- 一起來玩鳥 Starling Framework 簡介
		
開場 Starling Framework是一套Flash 2D遊戲開發"工具",是使用Flash最新的Stage3D API建構出來的一套Framework.最大優點在於使用GP ...
 - 一起來玩鳥 Starling Framework(5)Multi-Touch
		
這篇來談談Starling的Multi-Touch.前一篇也提到,Multi-Touch一樣是監聽TouchEvent.TOUCH,然後由TouchEvent的e.getTouches()取回多點的資 ...
 - 一起來玩鳥 Starling Framework(2)效能測試以及Image與Texture
		
上一篇我們放了一個Quad與TextField在舞台上慢慢轉.眼尖的可能會發現轉起來邊緣有點鋸齒,這可以透過設定Starling的反鋸齒來解決,在Main.as裡,新增了_starling之後,可以加 ...
 - 一起來玩鳥 Starling Framework(7)MovieClip
		
承上一篇,我們接著來講最後一個IAnimatable類別,MovieClip.Starling的MovieClip跟native的MovieClip不太一樣,它只能接收一個Vector.<Tex ...
 - 一起來玩鳥 Starling Framework(9)Particle
		
最後,來看看Starling裡一個很炫的功能:Particle.Particle屬於extension,所以要另外下載檔案:Starling-Extension-Particle-System.下載之 ...
 - 一起來玩鳥 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(3)Button!
		
週末夜來介紹個簡單的DisplayObject就好.不論是在電腦上或行動裝置上,跟使用者互動次數最多的,大概就是按鈕了.因此,Starling有個Button類別,來做出這個常用的互動元件. 同樣是因 ...
 - 一起來玩鳥 Starling Framework(8)BitmapFont
		
所謂BitmapFont,就是事先將我們會用到的字型,會用到的字,輸出成一張圖片,類似Sprite sheet,以及一個xml格式的Data file,然後我們一次將這文字圖片轉成Texture,up ...
 
随机推荐
- 手把手教你配置苹果APNS推送服务|钿畑的博客 | 钿畑的博客
			
http://www.360doc.com/content/15/0118/17/1073512_441822850.shtml# 钿畑的文章索引 1. 什么是推送通知 2. 什么是APNS? 3. ...
 - linux平台从源码安装git【转】
			
转自:http://blog.csdn.net/lianshaohua/article/details/50571560 版权声明:本文为博主原创文章,未经博主允许不得转载. 如果是ubuntu等能自 ...
 - Python标准库——collections模块的Counter类
			
1.collections模块 collections模块自Python 2.4版本开始被引入,包含了dict.set.list.tuple以外的一些特殊的容器类型,分别是: OrderedDict类 ...
 - Grunt环境搭建及使用 前端必备
			
jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...
 - CentOS系统挂载FAT32的U盘
			
Linux挂载U盘步骤如下 1:将U盘插入USB接口,检查是否插好 2:用fdisk命令检查分区和USB设备信息 [root@wgods ~]# fdisk -l Disk /dev/sda: 100 ...
 - 欧拉函数O(sqrt(n))与欧拉线性筛素数O(n)总结
			
欧拉函数: 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. POJ 2407.Relatives-欧拉函数 代码O(sqrt(n)): ll euler(ll n){ ll ans=n; ...
 - HDU 1754.I Hate It-结构体版线段树(单点更新+区间查询最值)
			
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
 - Problem A: 英雄无敌3(1)【dp/待补】
			
Problem A: 英雄无敌3(1) Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 86 Solved: 16[Submit][Status][ ...
 - HDU 1391 number steps(找规律,数学)
			
Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown ...
 - ASP.NET Core 2.2 基础知识(二) 中间件
			
中间件是一种装配到应用管道以处理请求和相应的软件.每个软件都可以: 1.选择是否将请求传递到管道中的下一个组件; 2.可在调用管道中的下一个组件前后执行工作. 管道由 IApplicationBuil ...