Corona SDK游戲開發實例(三):處理retina顯示屏
今天,我將開始使用新的工具開發iPhone游戲:Corona SDK
在OpenGL,OpenAL,Box2D和Lua頂層被創建,Corona讓您可以開發,使用本地IOS特性原生速度運行的游戲,如多點觸控,GPS,加速度計,陀螺儀,攝像頭,谷歌地圖,WebKit,以及軟鍵盤。
此外,Corona支持超大量的API,這將讓您為您的游戲添加很多有趣的功能,如廣告,虛擬貨幣,數據庫等。
在第一步,我會盡力將我的老Flash游戲Red Flowers 移植到iPhone,將處理iPhone 4的retina顯示模式。
我們會處理兩個不同屏幕尺寸:320 ×480和640× 960。所以,首先要做的就是設計了兩個不同的初始頁面,一個正常的和一個retina增強的iPhone模式。
在左側,480 × 320為正常的iPhone上初始視圖,在右側,960 × 640高清retina顯示屏初始視圖。
我把他們保存在一個文件夾,稱他們分別splash.png和splash_hd.png。
請注意,高清圖像和正常圖像的名稱相同,除了_hd后綴。
現在,最基本的Corona項目有三個文件:build.settings其中包括duild-time屬性, config.lua包含運行時屬性, main.lua這是主文件本身。
正如你可以看到Lua擴展名,Corona SDK使用的Lua編程語言??赡苣阋呀浻龅竭^它,當玩魔獸世界的宏和接口時。無論如何,這并不難,和AS3也沒那么不同。
讓我們來看看build.settings文件:
- settings =
- {
- orientation =
- {
- default = "landscapeRight",
- },
- }
在這里,我只是設置景觀的方向,因為這游戲就是橫向模式播放。
這是config.lua文件:
- application =
- {
- content =
- {
- width = 320,
- height = 480,
- scale = "letterbox",
- imageSuffix =
- {
- ["_hd"] = 2,
- },
- },
- }
另一種簡單而直觀的的設置:我定義了游戲的高度和寬度,并設置縮放模式為“letterbox”。
這些都是可能的動態縮放設置:
* none - 關閉動態內容縮放
* letterbox - 盡可能均勻縮放內容,同時仍然在屏幕上顯示的所有內容。這是類似的非寬屏電視機上觀看寬屏DVD,你可以使用臺下內容填充溢出區域,而不是顯示黑邊。
* zoomEven – 均勻縮放以填補屏幕,同時保持長寬比。新的屏幕如果有不同的寬高比,有些內容可能會出現屏幕外。
* zoomStretch - 內容非均勻擴展到填滿整個屏幕。所有內容將保持在屏幕上,但它可能會縱向或橫向拉長。
然后,當圖像需要乘以2以匹配設備的分辨率,我們定義imageSuffix要使用的后綴。你還記得_hd后綴我們添加到我們的高清初始視圖嗎?就是它。
最后,讓我們寫代碼main.lua:
- display.setStatusBar(display.HiddenStatusBar)
- local bg = display.newImageRect("splash.png",480,320)
- bg.x = bg.contentWidth/2
- bg.y = bg.contentHeight/2
第1行:隱藏狀態欄
第2行:定義一個變量bg,分配給它的分辨率低初始屏幕的路徑,跟著是大小。這時圖像會自動顯示,它的起始(中心)與設備的左上頂角對齊。
第3行:根據它的寬度,初始視圖水平中心對齊
第4行:對高度做同樣的事情。
請注意X和Y屬性工作方式同AS3,而contentWidth和contentHeight像AS3的寬度和高度的作用。
一旦所有的文件都保存在同一文件夾,就到了運行在iPhone和iPhone4模式模擬器的時候。
最后,我們有了我們的初始視圖并起作用。下一次,我會添加交互。