2013年4月14日 星期日

CORONA SDK 裡的 build.setting 和 config.lua


相信你一定玩過消方塊 Bejeweled Blitz 與植物大戰殭屍 Planet vs. Zombie ,這兩個膾炙人口的遊戲鼻祖是 Popcap 公司,他們公司的 Giordano Contestabile 曾說:If you look at the mobile market, and you look at the top games on iOS, 75 percent of them are made by independent developers. Mobile is a space where the barrier of entry is much lower, and there's much more opportunity for independent developers to play. 他說百分之七十五在 iOS 平台上的熱門遊戲都是獨立開發者 independent developers 而不是大型電玩公司做出來的。因為行動開發的市場門檻是那麼的低,所以給獨立開發者大的機會在這個市場上展露頭角。不用懷疑,只要你有好的點子,Corona SDK 可以幫你以十倍速的效率達成目標。趕快加入 Corona 的開發行列吧。

這次我們要來看 Corona Project 裡面的三個重要檔案。

首先第一個是 main.lua

Corona SDK 用來開發行動應用的程式語言是 LUA 語言,LUA 是葡萄牙語中「Luna」(月亮)的意思。它被發明出來是要成為一個很容易嵌入其它語言中使用的語言。所以它的特色是小,便捷,嵌入 (這目標聽起來很像 JAVA 語言是不是?) 最早的 LUA 體積小、啟動速度快。它用標準 C 語言編寫並以原始碼形式開放,編譯後僅僅一百餘K,可以很方便的嵌入別的程式裡。這個 main.lua 就是整個 project 的核心程式,也是未來我們要撰寫程式最主要的檔案。等一下我們再來看 Hello World! 它程式的內容。

第二個是 build.settings 檔案

這個檔案裡放著 Corona Project 最後要編譯到用戶裝置裡面時,一些與目標平台(我指的是 android 或 iOS)相關的設定值,例如:在 android 系統上你需要得到的授權 permissions,或是像在 iOS 平台,針對 iPhone/iPad/iPhone5 等不同裝置上要顯示的 Icon 圖檔等等。另外,你的應用程式是『直式』portrait或是『橫式』landscape,也是在這裡設定。

settings = 
{
 iphone =
 {
  plist =
  {
         CFBundleIconFile = "Icon.png",
         CFBundleIconFiles = {
            "Icon.png", 
            "Icon@2x.png", 
            "Icon-72.png", 
         },
  },
 }
}

第三個是 config.lua 檔案

這個檔案裡放著一些你程式執行時要用到的設定值,例如:
動態內容縮放 Dynamic Content Scaling。
動態內容對齊 Dynamic Content Alignment。
動態內容屬性 Dynamic Content Properties。
動態圖形解析度 Dynamic Image Resolution。等等
Dynamic Content 技術是 Corona SDK 為了配合各種不同裝置,不同營幕尺吋,所提出的解決方案。譬如:早期 iPhone 剛推出時是寬乘長各 320 x 480 個像素(點)的裝置,到現在 iPhone5 上面已經有寬乘長各640 x 1136 的像素(點)。如何寫一套程式,就能滿足各個不同裝置的解析度,這個 config.lua 設定有很大的幫助。

application =
{
 content =
 {
  width = 320,
  height = 480,
  scale = "letterbox" -- zoom to fill screen, possibly cropping edges
 },
}

那麼,我們的 Hello World! 主程式,到底寫了幾行呢?不用驚訝,在模擬器跑的這個程式只用了五行。


 local background = display.newImage( "world.jpg" )
 local myText = display.newText( "Hello, World!", 0, 0, native.systemFont, 40 )
 myText.x = display.contentWidth / 2
 myText.y = display.contentHeight / 4
 myText:setTextColor( 255,110,110, 120 )


第一行:設定一個變數 background 把我們的背景(在 HelloWorld 資料夾裡的地球圖 world.jpg)秀出來。
第二行:設定一個變數 myText 把 "Hello, World!" 這個文字字串用系統字型 native.systemFont,40點大的字體秀出來。
第三行與第四行:把文字顯示的位置移到顯示裝置 x = display.contentWidth / 2 跟 y = display.contentHeight / 4 的地方。
第五行:把文字顯示顏色設定成 (r,g,b) = (255,110,110),透明度設定成 alpha = 120。

看到這裡,你可能有一些疑問?什麼是 display.newImage, display.newText, display.contentWidth, display.contentHeight 呢?
沒關係,下一篇我會繼續說下去...

待續...



1 則留言: