位元詩人 [Solar2D] 程式設計教學:練習寫第一隻程式

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

[注意事項] Corona 已改名為 Solar2D

在本文中,我們藉由簡易的 Hello World 範例來熟悉開發 Solar2D 應用程式的過程,也會一併說明 Solar2D 應用程式的專案架構。

啟動 Solar2D 模擬器時,會進入專案管理的儀表板:

Solar2D 的管理面板

在儀表板左下方的 Quick Links 區塊中,有 Demos (範例) 的連結,這是 Solar2D 官方的範例程式。由於 Solar2D 算是相對冷門的軟體,透過官方範例學習也是相當重要的。讀者可自行尋找所需的範例,本系列文章不重覆說明這些範例。

點選 New Project 即可建立新的專案:

建立新的 Solar2D 專案

在這個例子中,我們建立 blank (空白) 應用程式,這種專案不會有額外的樣板程式碼,由程式人自行加入所需的程式碼。如果讀者想用其他類型的專案也可以,基本上只是起始的樣板程式碼略有不同,但都可以事後再修改。

回到本文的範例程式,由於此專案有多個檔案,我們將完整的專案範例放在這裡,讓讀者更容易追蹤程式碼,本文僅節錄部分內容。

以程式碼來說,Solar2D 專案主要有三個檔案:

  • main.lua :主程式的起始點
  • config.lua :專案設定檔
  • (選擇性) build.settings :編譯 Solar2D 應用程式時所用的設定

這三個檔案的名稱是固定的,勿隨意更改。

本範例程式的示意圖如下:

{{< figure src="/img/corona-sdk/helloworld.png" alt="Solar2D 的 Hello World 程式" class="phone" >}}

其實只有一行 "Hello Corona" 文字而已,本範例只是要讓讀者熟悉開發流程,所以範例儘量簡化。

以本範例來說,實際的程式碼皆位於 main.lua ,其內容如下:

-- Set background color to beige.
display.setDefault("background", 245 / 255, 245 / 255, 220 / 255)

-- Set some text.
local text = display.newText({
    text = "Hello Corona",
    x = display.contentCenterX,
    y = display.contentCenterY,
    fontSize = 24,
    align = "center"
})

-- Set text color to black.
text:setFillColor(0 / 255, 0 / 255, 0 / 255)

在本範例中,這個程式只有三行指令。第一條指令將程式背景設為米白色 (beige),在 Solar2D 應用程式中,顏色採 RGB 記錄,但採用小數點;相對於這個特性,本處刻意使用 245 / 255 的寫法,日後要修改顏色時不需再按計算機,只要改數字即可。

第二條指令建立一個 Text 物件,該物件用來表示靜態的文字。在建立物件時,我們要傳入一個 Lua 表 (table) 做為參數,有關該參數的詳細說明,請看這裡。這種有關 API 使用的東西不要死背,也不要太依賴網路上的教程 (包括本文),要習慣查官方 API 文件,畢竟官方文件是最權威的說明,而線上教程有可能會過時。

不過,我們還是說明一下,此處的 text 物件的 xy 是對應到物件的中心點。在 Solar2D 程式中,大部分物件的錨點 (anchor) 是在中心點,部分物件可將錨點設到左上角,需自行查閱 API 文件來確認。

最後一條指令則是用來修改 text 物件的顏色,我們用同樣的方法來標記顏色。如果讀者不知道怎麼查 RGB 顏色的話,可以上網找一些 RGB 色盤,像是這個。由於 RGB 色盤可用的數量繁多,將其全部列出會占掉過多篇幅,這種東西同樣也是要自行試出喜歡的配色。

在本程式中,我們只有單一的 main.lua 命令稿,有些多頁面的程式,可藉由 composer 套件來轉移頁面,我們將於後文中展示這類範例。

至於 config.luabuild.setting 則較偏向設定檔,此處暫保持預設值。有興趣的讀者可到相關頁面查詢如何更改相關設定。此外,還有一些圖標等靜態 assets,也是先暫時保留預設值,暫時不用去更動其內容。

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。