2013年7月11日 星期四

Flash遊戲引擎 CitrusEngine (七) 開始你的第一個行動APP遊戲吧 - 開始一個CitrusEngine APP專案

實作過之前的教學,相信您已經對CitrusEngine有一定程度的瞭解了,它可以讓您很輕鬆的作出像是超級瑪麗類型的遊戲。
不過這套引擎,並不是只能作這樣類型的遊戲,以下教程,我們將換換口味,用CitrusEngine來製作一個直式捲軸設計遊戲(老玩家都知道的1943),透過實作這個遊戲,讓你更理解如何自己定義遊戲中的元件。
首先準備一下素材,筆者在網路上找這了這張圖片XD
處理一下,拿來當範例使用(建議你可以自己準備,因為我不會畫圖,只好拿人家的圖來玩..)
這次我們順便來試試CitrusEngine在行動裝置上效能如何,用你的FlashDevelop打開一個AIR Mobile AS3 APP專案。(我是用FlashDevelop4.4.2)
開好之後先輸出一次,有打開一個空白的模擬器畫面,確認工作無誤。
一開始開發,我們先在模擬器上作測試,等到有一個成果,再試著發佈到行動裝置上..
首先得去下載我們需要的CitrusEngine SWC,到CitrusEngine官網的下載頁,這次我們不需要用到Box2D,所以下載Citrus + Starling + Feathers就行了。
下載好了之後,放到你的專案裡,並記得把它Add to Library。
接下來改一下Main.as



package 
{
 import citrus.core.starling.StarlingCitrusEngine;
 import flash.desktop.NativeApplication;
 import flash.events.Event;
 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.geom.Rectangle;
 import flash.ui.Multitouch;
 import flash.ui.MultitouchInputMode;
 
 /**
  * ...
  * @author Cain
  */
 public class Main extends StarlingCitrusEngine 
 {
  
  public function Main():void 
  {
   stage.scaleMode = StageScaleMode.NO_SCALE;
   stage.align = StageAlign.TOP_LEFT;
   stage.addEventListener(Event.DEACTIVATE, deactivate);
   
   // touch or gesture?
   Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
   
   // entry point
   setUpStarling(true, 1, new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight));
   state = new MainStarlingState();
   // new to AIR? please read *carefully* the readme.txt files!
  }
  
  private function deactivate(e:Event):void 
  {
   // make sure the app behaves well (or exits) when in background
   NativeApplication.nativeApplication.exit();
  }
  
 }
 
}
打開手機專案,實際上,FlashDevelop已經幫你加上一些可能必要的程式碼,所以我們也只要稍加修改就可以讓它支援CitrusEngine。
首先把Main改成繼承StarlingCitrusEngine (17行)。
然後啟動Starling(30行),考慮手機上的效能,最好還是使用Starling,第一個參數先設成true,把效能顯示打開,第3個參數場景大小,由於各行動裝置上的解析度不一,所以這裡直接抓整個螢幕大小stage.fullScreenWidth, stage.fullScreenHeight。
(31行)我們設定一個場景state,這個Class等等作,先打上...
(38行)的NativeApplication.nativeApplication.exit();註解先取消,我們希望這個遊戲退出前景時就關起來。(關於這裡,你可以自己選擇,如果你不希望接個電話就關閉,你可以先註解起來)
再來我們new一個舞台場景MainStarlingState
package  
{
 import citrus.core.starling.StarlingState;
 /**
  * ...
  * @author Cain
  */
 public class MainStarlingState extends StarlingState 
 {
  
  public function MainStarlingState() 
  {
   super();
  }
  
  override public function initialize () : void
  {
   super.initialize();
   //以下開始寫吧...
  }
 }

}
場景很單純,這個MainStarlingState繼承StarlingState,然後複寫它的 initialize(),初始化後你就可以開始快樂的開發行動裝置遊戲了。
如果你真的懶得自己作,可以下載我寫好的專案..

Flash遊戲引擎 CitrusEngine (八) 開始你的第一個行動APP遊戲吧 - 試著製作一個CitrusEngine角色元件

沒有留言: