自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Corona SDK游戲開發(fā)實例(一):創(chuàng)建用戶界面

譯文
移動開發(fā) iOS Android 移動應(yīng)用 游戲開發(fā)
在本系列指導(dǎo)教程中,我們共同來學(xué)習(xí)如何創(chuàng)建一款平衡球類游戲。這款游戲的目標(biāo)是保持小球平衡、避開各種障礙物并最終到達終點。簡單的小游戲,咱們馬上進入正題!

[[89782]]教程說明

  • 使用工具: Corona SDK
  • 執(zhí)行難度: 普通
  • 操作時間: 30分鐘到60分鐘

步驟一: 應(yīng)用程序概述

[[89783]]


在Lua與Corona SDK API的幫助下,我們將利用預(yù)先準備好的圖像素材制作出一款有趣的小游戲。

玩家需要利用設(shè)備自身配備的陀螺儀操控小球避開障礙物,并最終到達目的地。大家可以通過修改游戲參數(shù)對內(nèi)容進行自定義。

步驟二: 目標(biāo)開發(fā)平臺

[[89784]]

首先,我們要選擇應(yīng)用程序作品所依托的運行平臺,確定了這一點后我們才能選擇與設(shè)備相匹配的圖像顯示尺寸。

iOS系統(tǒng)平臺具體參數(shù)如下:

  • iPad: 1024x768分辨率, 132ppi

  • iPhone/iPodTouch: 320x480分辨率, 163 ppi

  • iPhone4: 960x640分辨率, 326 ppi

由于Android平臺的開放特性,我們需要面對各種各樣不同參數(shù)的設(shè)備及分辨率。這里我們選擇幾款人氣產(chǎn)品作為主要參考對象:

  • 谷歌 NexusOne: 480x800分辨率, 254 ppi

  • 摩托羅拉 DroidX: 854x480分辨率, 228 ppi

  • HTC Evo: 480x800分辨率, 217 ppi

在這篇指南文章中,我們主要以iOS平臺——尤其是iPhone/iPod為基準進行圖像設(shè)計工作。不過下文中所使用的代碼理論上也同樣適用于Android系統(tǒng)上的Corona SDK開發(fā)。

步驟三: 用戶界面

[[89785]]

一款簡潔而友好的用戶界面會幫助我們的應(yīng)用作品順利打開市場,而在指南針應(yīng)用中,用戶界面的構(gòu)成元素主要有背景圖案及指針圖形。

本指南中所涉及的一切界面圖形資源都匯總在壓縮包內(nèi),大家可以點擊以下鏈接獲取并使用。

下載鏈接:https://mobiletuts.s3.amazonaws.com/Corona-SDK_Compass/source.zip

步驟四: 導(dǎo)出圖像

根據(jù)大家所選擇的設(shè)備平臺,我們需要將圖像資源以合適的PPI及尺寸進行導(dǎo)出。這項工作非常簡單,任何一款主流圖像編輯工具都能實現(xiàn),大家根據(jù)自己 的習(xí)慣處理即可。我個人使用AdjustSize,這是一款Mac OS X系統(tǒng)自帶的圖像預(yù)覽應(yīng)用。導(dǎo)出完成后,請記得給文件起一個清晰準確的名稱,并保存在項目文件夾當(dāng)中。

步驟五: 聲音

[[89786]]

為了給玩家?guī)砀鋹偟挠螒蝮w驗,我們需要為事件設(shè)定各種音效。在本實例中涉及到的各種音效資源都能夠在Soungle.com網(wǎng)站中找到,搜索關(guān)鍵字“bell”及“buzz”即可。

步驟六: 應(yīng)用程序配置

首先創(chuàng)建一個外部文件config.lua,它的作用是保證應(yīng)用程序在設(shè)備上以全屏方式運行。這個文件中會明確出現(xiàn)應(yīng)用程序的原始分辨率,并提供一套縮放方案,保證應(yīng)用能夠在各種不同設(shè)備的獨特分辨率下正確顯示。

  1. application = 
  2.     content = 
  3.     { 
  4.         width = 320, 
  5.         height = 480, 
  6.         scale = "letterbox" 
  7.     }, 

步驟七: Main.lua

好,準備工作就緒,現(xiàn)在我們開始編寫應(yīng)用!

打開大家最喜愛的Lua編輯器(任何一款文本編輯工具都能勝任,不過并不是每種都支持Lua語法高亮顯示功能),準備著手編寫滿載自己汗水的應(yīng)用吧!請記住,一定把文件保存在項目文件夾中,并命名為Main.lua。

步驟八: 代碼結(jié)構(gòu)

我們要將代碼以類的形式進行結(jié)構(gòu)整理。如果大家熟悉ActionScript或者Java,肯定會發(fā)現(xiàn)我所推薦的這套結(jié)構(gòu)基本上符合二者的構(gòu)造特點。

  1. Necessary Classes 
  2. Variables and Constants 
  3. Declare Functions 
  4.     contructor (Main function) 
  5.     class methods (other functions) 
  6. call Main function  

步驟九: 隱藏狀態(tài)欄

  1. display.setStatusBar(display.HiddenStatusBar) 

這條代碼的作用是隱藏狀態(tài)欄。狀態(tài)欄在任何一款移動系統(tǒng)平臺上都會出現(xiàn),一般位于屏幕上方,主要顯示時間、信號強度等提示信息。

步驟十: 導(dǎo)入物理引擎

要還原真實的碰撞反應(yīng),我們需要在應(yīng)用中使用物理效果庫,通過以下代碼將庫導(dǎo)入程序:

  1. local physics = require('physics'
  2. physics.start() 
  3. physics.setGravity(0, 0) 

步驟十一: 游戲背景圖案

[[89787]]

既然是練手用的小作品,我們就姑且使用上面這幅圖片作為背景圖案。以下幾行代碼用于將圖片引入應(yīng)用程序。

  1. -- Graphics 
  2. -- [Background] 
  3. local bg = display.newImage('bg.png'

步驟十二: 標(biāo)題視圖

[[89788]]

上圖所示即為標(biāo)題視圖,它是我們進入游戲后所面對的***個互動界面,按照下列變量將內(nèi)容設(shè)定并保存。

  1. -- [Title View] 
  2. local titleBg 
  3. local playBtn 
  4. local creditsBtn 
  5. local titleView 

步驟十三: 制作人員視圖

[[89789]]

上圖所示為開發(fā)者姓名及游戲版權(quán)歸屬信息,利用以下變量對其加以保存。

  1. -- [CreditsView] 
  2. local creditsView 

步驟十四: 游戲視圖

[[89790]]

游戲視圖所涉及的要素較多,包括玩家、障礙物及目的地。利用下面列出的代碼完成游戲界面的基本創(chuàng)建。

  1. -- [Game View] 
  2. -- [Player] 
  3. local player 
  4. -- [Bars Table] 
  5. local bars = {} 
  6. -- [Holes Table] 
  7. local holes = {} 
  8. -- [Goal] 
  9. local goal 

步驟十五: 聲音

以下代碼將游戲中用到的聲音加以保存。

[[89791]]

  1. local bell = audio.loadSound('bell.caf'
  2. local buzz = audio.loadSound('buzz.caf'

步驟十六: 代碼審查

以下列出的是本教程所提到全部代碼綱要,大家可以從宏觀角度對作品進行核查,確定所有要素都已經(jīng)包含在程序成品當(dāng)中:

  1. -- Teeter like Game 
  2. -- Developed by Carlos Yanez  
  3.  
  4. -- Hide Status Bar 
  5.  
  6. display.setStatusBar(display.HiddenStatusBar)  
  7.  
  8. -- Physics 
  9.  
  10. local physics = require('physics'
  11. physics.start() 
  12. physics.setGravity(0, 0) 
  13.  
  14. -- Graphics 
  15.  
  16. -- [Background]  
  17.  
  18. local bg = display.newImage('bg.png'
  19.  
  20. -- [Title View]  
  21.  
  22. local titleBg 
  23. local playBtn 
  24. local creditsBtn 
  25. local titleView 
  26.  
  27. -- [Credits] 
  28.  
  29. local creditsView  
  30.  
  31. -- [Player] 
  32.  
  33. local player 
  34.  
  35. -- [Bars Table] 
  36.  
  37. local bars = {} 
  38.  
  39. -- [Holes Table] 
  40.  
  41. local holes = {}  
  42.  
  43. -- [Goal] 
  44.  
  45. local goal 
  46.  
  47. -- Sounds 
  48.  
  49. local bell = audio.loadSound('bell.caf'
  50. local buzz = audio.loadSound('buzz.caf'

步驟十七: 函數(shù)聲明

應(yīng)用啟動之初聲明所有函數(shù)的基本狀態(tài)。

  1. local Main = {} 
  2. local startButtonListeners = {} 
  3. local showCredits = {} 
  4. local hideCredits = {} 
  5. local showGameView = {} 
  6. local gameListeners = {} 
  7. local movePlayer = {} 
  8. local onCollision = {} 
  9. local alert = {} 
  10. local dragPaddle = {} 

步驟十八: 游戲構(gòu)造函數(shù)

接下來,我們要創(chuàng)建一套運行邏輯的初始化機制,具體內(nèi)容如下:

  1. function Main() 
  2.     -- code... 
  3. end 

步驟十九: 添加標(biāo)題視圖

現(xiàn)在我們將標(biāo)題視圖放置在主界面中,同時調(diào)用用于監(jiān)聽按鈕“觸摸”動作的函數(shù)。

  1. function Main() 
  2.     titleBg = display.newImage('titleBg.png'
  3.     playBtn = display.newImage('playBtn.png', display.contentCenterX - 35.5, display.contentCenterY + 10) 
  4.     creditsBtn = display.newImage('creditsBtn.png', display.contentCenterX - 50.5, display.contentCenterY + 65) 
  5.     titleView = display.newGroup(titleBg, playBtn, creditsBtn) 
  6.       
  7.     startButtonListeners('add'
  8. end 

步驟二十: 開始按鈕監(jiān)聽

此函數(shù)的作用是為標(biāo)題視圖按鈕添加所需的監(jiān)聽器。

  1. function startButtonListeners(action) 
  2.     if(action == 'add') then 
  3.         playBtn:addEventListener('tap', showGameView) 
  4.         creditsBtn:addEventListener('tap', showCredits) 
  5.     else 
  6.         playBtn:removeEventListener('tap', showGameView) 
  7.         creditsBtn:removeEventListener('tap', showCredits) 
  8.     end 
  9. end 

步驟二十一: 顯示開發(fā)人員名單

當(dāng)用戶點擊對應(yīng)按鈕時,應(yīng)用會顯示開發(fā)人員名單。此時要額外添加一個監(jiān)聽器,這樣用戶再次點擊時程序?qū)⒅兄姑麊物@示并返回主界面。

  1. function showCredits:tap(e) 
  2.     playBtn.isVisible = false 
  3.     creditsBtn.isVisible = false 
  4.     creditsView = display.newImage('credits.png', 0, display.contentHeight+40) 
  5.     transition.to(creditsView, {time = 300, y = display.contentHeight-20, onComplete = function() creditsView:addEventListener('tap', hideCredits) end}) 
  6. end 

步驟二十二: 隱藏開發(fā)人員名單

當(dāng)用戶在開發(fā)人員名單顯示過程中點擊屏幕,顯示將以動畫形式中斷并返回主界面。

  1. function hideCredits:tap(e) 
  2.     playBtn.isVisible = true 
  3.     creditsBtn.isVisible = true 
  4.     transition.to(creditsView, {time = 300, y = display.contentHeight+creditsView.height, onComplete = function() creditsView:removeEventListener('tap', hideCredits) display.remove(creditsView) creditsView = nil end}) 
  5. end 

步驟二十三: 顯示游戲視圖

當(dāng)用戶點擊“開始游戲”(Play)按鈕時,標(biāo)題視圖將以動畫形式消去并顯示游戲視圖。

  1. function showGameView:tap(e) 
  2.     transition.to(titleView, {time = 300, x = -titleView.height, onComplete = function() startButtonListeners('rmv') display.remove(titleView) titleView = nil end}) 

步驟二十四: 目的地

在這里我們要為小球設(shè)定目的地。另外,我們還要為其設(shè)定名稱,以便小球觸碰到目的地時順利觸發(fā)預(yù)定事件。

  1. -- Goal 
  2.   
  3. goal = display.newImage('goal.png'
  4. goal.x = 439 
  5. goal.y = 31 
  6. goal.name = 'g' 

步驟二十五: 墻體

我們要在游戲界面中設(shè)置墻體,這樣才能保證小球始終在預(yù)定的游戲場地內(nèi)活動。

  1. -- Walls 
  2.       
  3.     local left = display.newLine(-1, 0, -1, display.contentHeight) 
  4.     local right = display.newLine(display.contentWidth+1, 0, display.contentWidth+1, display.contentHeight) 
  5.     local top = display.newLine(0, -3, display.contentWidth, -3) 
  6.     local bottom = display.newLine(0, display.contentHeight, display.contentWidth, display.contentHeight) 

步驟二十六: 障礙物

這些條形障礙物是提升游戲樂趣的關(guān)鍵所在,利用以下代碼在游戲中實現(xiàn)此類設(shè)置。

  1. -- Bars 
  2.  
  3. local b1 = display.newImage('bar.png', 92, 67) 
  4. local b2 = display.newImage('bar.png', 192, -2) 
  5. local b3 = display.newImage('bar.png', 287, 67) 
  6. local b4 = display.newImage('bar.png', 387, -2) 

步驟二十七: 陷阱

這些充當(dāng)陷阱的洞是我們?yōu)樾∏蛟O(shè)計的“敵人”,一旦小球觸碰到它們,游戲即宣告結(jié)束。

  1. -- Holes  
  2.  
  3. local h1 = display.newImage('hole.png', 62, 76) 
  4. local h2 = display.newImage('hole.png', 124, 284) 
  5. local h3 = display.newImage('hole.png', 223, 224) 
  6. local h4 = display.newImage('hole.png', 356, 114) 
  7. local h5 = display.newImage('hole.png', 380, 256) 
  8. -- Name holes for collision detection 
  9. h1.name = 'h' 
  10. h2.name = 'h' 
  11. h3.name = 'h' 
  12. h4.name = 'h' 
  13. h5.name = 'h' 

步驟二十八: 小球(玩家)

接下來我們要在游戲中添加主角——小球。在設(shè)備陀螺儀的幫助下,小球會隨著玩家的操作而自然滾動。

  1. -- Player  
  2.  
  3. player = display.newImage('player.png'
  4. player.x = 49 
  5. player.y = 288 
  6. player:setReferencePoint(display.CenterReferencePoint) 

次回預(yù)告

在本系列指南教程的***部分,我們共同探討了如何為游戲設(shè)計用戶界面及基本設(shè)置。希望大家繼續(xù)關(guān)注第二部分,屆時我們將一道學(xué)習(xí)如何處理應(yīng)用程序的邏輯、按鈕、操作等細節(jié)。咱們下期再見!

原文鏈接:

http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-teeter-like-game-setup-interface-creation/

責(zé)任編輯:佚名 來源: 51CTO.com
相關(guān)推薦

2012-08-10 09:22:38

CoronaCorona SDKCorona SDK游

2012-12-13 13:27:29

Corona SDK

2011-05-03 16:41:04

BlackBerry

2012-12-13 09:20:55

Corona 2.0Corona SDK下

2013-04-27 16:14:33

Corona

2012-08-07 09:20:48

CoronaCorona SDKCorona SDK指

2012-12-13 10:55:25

CoronaCorona SDK

2011-07-08 14:04:40

LuaCorona

2013-08-01 14:03:49

JavaScript

2010-11-19 10:26:19

Oracle創(chuàng)建用戶

2012-03-06 08:47:40

Corona

2013-05-20 15:42:22

2013-11-27 10:12:11

2011-08-01 15:27:49

iPhone 界面

2024-10-28 16:03:24

2024-09-24 10:00:55

2011-06-21 14:12:14

Qt Linux 登錄界面

2011-07-11 09:58:52

2013-05-21 11:26:49

Android游戲開發(fā)Sensor感應(yīng)

2011-07-26 09:58:24

點贊
收藏

51CTO技術(shù)棧公眾號