Corona SDK 做 Mobile App 非常快速,這主要要歸功於 Corona SDK 裡完整的 API (Application programming interface),但是要學習 Corona API 最好的方法就是看它所附的 Sample Source Code. 所以我也打算從帶您看 Sample Source Code 開始來入門 Corona SDK。
我們之前看過了 HelloWorld 的程式,今天我們來看這叫 FrameAnimation1 的簡單範例:
(PS:這個 project 的資料夾在 Corona SDK 路徑下面 /SampleCode/GettingStarted/FrameAnimation1/ 裡面)
local background = display.newImage( "grass.png" ) local radius = 40 local xdirection = 1 local ydirection = 1 local xspeed = 7.5 local yspeed = 6.4 local xpos = display.contentWidth * 0.5 local ypos = display.contentHeight * 0.5 local fruit = display.newImage( "fruit.png", xpos, ypos ) -- Get current edges of visible screen (accounting for the areas cropped by "zoomEven" scaling mode in config.lua) local screenTop = display.screenOriginY local screenBottom = display.viewableContentHeight + display.screenOriginY local screenLeft = display.screenOriginX local screenRight = display.viewableContentWidth + display.screenOriginX local function animate(event) xpos = xpos + ( xspeed * xdirection ); ypos = ypos + ( yspeed * ydirection ); if ( xpos > screenRight - radius or xpos < screenLeft + radius ) then xdirection = xdirection * -1; end if ( ypos > screenBottom - radius or ypos < screenTop + radius ) then ydirection = ydirection * -1; end fruit:translate( xpos - fruit.x, ypos - fruit.y) end Runtime:addEventListener( "enterFrame", animate );
首先我們先執行一下這個程式,很簡單,就是一個在螢幕裡彈來彈去的移動蘋果。好,那我們先看看 Corona SDK 模擬器裡有些什麼?
我只介紹重要的部分,第一是最右邊那個 Window 選單拉下來,可以看到 View As,選到以後可以選擇你要模擬的硬體裝置,從 iPhone / iPhone4 / iPhone5 / iPad 到各種 Android 裝置,還有 Kindle Fire / Nook 等等。這個重要的是讓你有機會模擬不同裝置,在螢幕不同解析度時,App 會有什麼現象。依我的經驗 iOS 可以幾乎 95% 沒問題,但是 android 還是用真正的手機去 test 最保險。
第二是最右邊第二個 Hardware 選單拉下來,可以讓你把裝置打橫(由 portrait 變 landscape),或暫時停止運行 suspend 等等。
第三是 File 選單拉下來,有一個 build ,讓你選擇把 App 打包變成可以傳到裝置上的格式。在 android 時是 .apk 的檔案,在 iOS 時是 .app 的檔案。還有 File 選單最下面倒數第二項,Show Project Sandbox 項目,是讓你看看萬一有資料要存到裝置裡面,它模擬出一個儲存空間,讓你看到裡面存檔資料運作的情形。
接著,我們來看看『程式部分』,有兩個重點:第 35 行:
Runtime:addEventListener( "enterFrame", animate )
這個 API 呼叫是說,在 Runtime (也就是 LUA 程式執行起來之後),把 animate 這個 function ,在每個 "enterFrame" 訊息被系統收到時都執行一次。在沒有特別在 config.lua 裡面作不同設定的情形下,Corona 會以每秒三十個 Frame 的方式送這個 event 事件給你的程式,也就是說你的程式會像有個時鐘在跑一樣,每 1/30 秒就執行一次第 21 行 animate 這個 function。
另一個重點,第 32 行:
fruit:translate( xpos - fruit.x, ypos - fruit.y)
這裡, fruit 是一個 graphic 物件 object,這個物件有一個叫 translate 的方法,可以把它圖像的座標,從原來的位置移到 x 座標 = xpos - fruit.x, y 座標 = ypos - fruit.y 的位置去。
所以你就看到一個在螢幕裡彈來彈去的移動蘋果,很簡單吧。下回我們再看更精彩的。
待續...
沒有留言:
張貼留言