成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Corona SDK游戲開發實例(一):創建用戶界面

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

[[89782]]教程說明

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

步驟一: 應用程序概述

[[89783]]


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

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

步驟二: 目標開發平臺

[[89784]]

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

iOS系統平臺具體參數如下:

  • iPad: 1024x768分辨率, 132ppi

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

  • iPhone4: 960x640分辨率, 326 ppi

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

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

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

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

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

步驟三: 用戶界面

[[89785]]

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

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

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

步驟四: 導出圖像

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

步驟五: 聲音

[[89786]]

為了給玩家帶來更愉悅的游戲體驗,我們需要為事件設定各種音效。在本實例中涉及到的各種音效資源都能夠在Soungle.com網站中找到,搜索關鍵字“bell”及“buzz”即可。

步驟六: 應用程序配置

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

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

步驟七: Main.lua

好,準備工作就緒,現在我們開始編寫應用!

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

步驟八: 代碼結構

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

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

步驟九: 隱藏狀態欄

  1. display.setStatusBar(display.HiddenStatusBar) 

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

步驟十: 導入物理引擎

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

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

步驟十一: 游戲背景圖案

[[89787]]

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

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

步驟十二: 標題視圖

[[89788]]

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

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

步驟十三: 制作人員視圖

[[89789]]

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

  1. -- [CreditsView] 
  2. local creditsView 

步驟十四: 游戲視圖

[[89790]]

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

  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'

步驟十六: 代碼審查

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

  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'

步驟十七: 函數聲明

應用啟動之初聲明所有函數的基本狀態。

  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 = {} 

步驟十八: 游戲構造函數

接下來,我們要創建一套運行邏輯的初始化機制,具體內容如下:

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

步驟十九: 添加標題視圖

現在我們將標題視圖放置在主界面中,同時調用用于監聽按鈕“觸摸”動作的函數。

  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 

步驟二十: 開始按鈕監聽

此函數的作用是為標題視圖按鈕添加所需的監聽器。

  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 

步驟二十一: 顯示開發人員名單

當用戶點擊對應按鈕時,應用會顯示開發人員名單。此時要額外添加一個監聽器,這樣用戶再次點擊時程序將中止名單顯示并返回主界面。

  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 

步驟二十二: 隱藏開發人員名單

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

  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 

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

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

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

步驟二十四: 目的地

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

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

步驟二十五: 墻體

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

  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) 

步驟二十六: 障礙物

這些條形障礙物是提升游戲樂趣的關鍵所在,利用以下代碼在游戲中實現此類設置。

  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) 

步驟二十七: 陷阱

這些充當陷阱的洞是我們為小球設計的“敵人”,一旦小球觸碰到它們,游戲即宣告結束。

  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' 

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

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

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

次回預告

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

原文鏈接:

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

責任編輯:佚名 來源: 51CTO.com
相關推薦

2012-12-13 13:27:29

Corona SDK

2012-08-10 09:22:38

CoronaCorona SDKCorona 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

2012-03-06 08:47:40

Corona

2010-11-19 10:26:19

Oracle創建用戶

2013-05-20 15:42:22

2013-11-27 10:12:11

2011-08-01 15:27:49

iPhone 界面

2011-07-11 09:58:52

2024-10-28 16:03:24

2024-09-24 10:00:55

2011-06-21 14:12:14

Qt Linux 登錄界面

2013-05-21 11:26:49

Android游戲開發Sensor感應

2011-07-26 09:58:24

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av在线一区二区 | 亚洲福利在线观看 | 日本精品视频 | 激情亚洲| av大片在线观看 | 国产精品一区二区在线免费观看 | 免费激情网站 | 欧美精品在线免费观看 | 日本高清视频在线播放 | 激情国产| 99久久婷婷国产精品综合 | 国产在线拍偷自揄拍视频 | www久久久| 成人免费网站视频 | 亚洲精品成人在线 | 欧美日韩久久精品 | 国产精品美女久久久久 | 新超碰97| 99久久精品免费看国产小宝寻花 | 18成人在线观看 | 国产成人综合久久 | 在线观看成人精品 | 成人在线视频观看 | 中文字幕在线观看一区 | 中文字幕一区二区在线观看 | 亚洲美女一区二区三区 | 人人做人人澡人人爽欧美 | 日韩欧美一区二区三区免费观看 | 一级黄色av电影 | 毛片一级片| 日韩成人精品一区 | 国产精品视频在线播放 | 狠狠草视频 | 亚洲欧美一区二区三区1000 | 亚洲一区二区 | 免费福利视频一区二区三区 | 九九热精品视频在线观看 | 91久久久久久久久久久久久 | 日韩成人在线网站 | 久草成人 | 日韩在线免费视频 |