日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
CoronaSDK游戲開發(fā)實(shí)例(一):創(chuàng)建用戶界面

[[89782]]教程說明

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

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

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

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

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

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

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

  • iPad: 1024x768分辨率, 132ppi

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

  • iPhone4: 960x640分辨率, 326 ppi

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

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

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

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

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

步驟三: 用戶界面

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

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

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

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

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

步驟五: 聲音

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

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

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

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

步驟七: Main.lua

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

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

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

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

 
 
 
 
  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)欄在任何一款移動(dòng)系統(tǒng)平臺(tái)上都會(huì)出現(xiàn),一般位于屏幕上方,主要顯示時(shí)間、信號(hào)強(qiáng)度等提示信息。

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

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

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

步驟十一: 游戲背景圖案

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

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

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

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

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

步驟十三: 制作人員視圖

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

 
 
 
 
  1. -- [CreditsView] 
  2. local creditsView 

步驟十四: 游戲視圖

游戲視圖所涉及的要素較多,包括玩家、障礙物及目的地。利用下面列出的代碼完成游戲界面的基本創(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 

步驟十五: 聲音

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

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

步驟十六: 代碼審查

以下列出的是本教程所提到全部代碼綱要,大家可以從宏觀角度對(duì)作品進(jìn)行核查,確定所有要素都已經(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)用啟動(dò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ù)

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

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

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

現(xiàn)在我們將標(biāo)題視圖放置在主界面中,同時(shí)調(diào)用用于監(jiān)聽按鈕“觸摸”動(dòng)作的函數(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)用戶點(diǎn)擊對(duì)應(yīng)按鈕時(shí),應(yīng)用會(huì)顯示開發(fā)人員名單。此時(shí)要額外添加一個(gè)監(jiān)聽器,這樣用戶再次點(diǎn)擊時(shí)程序?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ā)人員名單顯示過程中點(diǎn)擊屏幕,顯示將以動(dòng)畫形式中斷并返回主界面。

 
 
 
 
  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)用戶點(diǎn)擊“開始游戲”(Play)按鈕時(shí),標(biāo)題視圖將以動(dòng)畫形式消去并顯示游戲視圖。

 
 
 
 
  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è)定名稱,以便小球觸碰到目的地時(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ù)定的游戲場(chǎng)地內(nèi)活動(dòng)。

 
 
 
 
  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)鍵所在,利用以下代碼在游戲中實(shí)現(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è)計(jì)的“敵人”,一旦小球觸碰到它們,游戲即宣告結(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è)備陀螺儀的幫助下,小球會(huì)隨著玩家的操作而自然滾動(dòng)。

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

次回預(yù)告

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

原文鏈接:

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


當(dāng)前題目:CoronaSDK游戲開發(fā)實(shí)例(一):創(chuàng)建用戶界面
網(wǎng)站鏈接:http://www.dlmjj.cn/article/cdjihdh.html