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

跨平臺(tái)工具Corona SDK指南:如何創(chuàng)建指南針應(yīng)用

譯文
移動(dòng)開發(fā) Android iOS 移動(dòng)應(yīng)用
在本篇指導(dǎo)文章中,大家將學(xué)習(xí)如何利用Corona SDK和智能手機(jī)固有硬件創(chuàng)建指南針應(yīng)用程序。閑話少敘,咱們馬上開始!

教程說明

  • 使用工具: Corona SDK
  • 執(zhí)行難度: 普通
  • 操作時(shí)間: 一小時(shí)

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

Corona-SDK_Compass

利用準(zhǔn)備好的圖片素材,我們將以Lua及Corona SDK API為基礎(chǔ)編寫屬于自己的指南針應(yīng)用程序。

基本上,完成品與蘋果公司在iOS系統(tǒng)中自帶的官方指南針應(yīng)用大同小異。

步驟二: 目標(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)中。

步驟五: 應(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.   
  3. Variables and Constants 
  4.   
  5. Declare Functions 
  6.   
  7.     contructor (Main function) 
  8.       
  9.     class methods (other functions) 
  10.   
  11. 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)度等提示信息。

步驟九: 背景圖案

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

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

步驟十: 指針

指針的作用是指明當(dāng)前方位,用戶配合背景圖案即可輕松了解需要的方向。

  1. -- [Pointer] 
  2. local pointer = display.newImage('pointer.png'

步驟十一: 指向文本信息

以下變量的作用在于顯示當(dāng)前指向的具體方位及角度。

  1. -- Heading Text 
  2. local heading = display.newText('0', display.contentCenterX, 60, native.systemFont, 21) 

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

應(yīng)用啟動(dòng)之初,向用戶聲明local函數(shù)的基本狀態(tài)。

  1. -- Functions 
  2. local Main = {} 
  3. local update = {} 

步驟十三: 構(gòu)造函數(shù)

接下來,我們需要?jiǎng)?chuàng)建一套運(yùn)行邏輯初始化機(jī)制,具體函數(shù)設(shè)定如下:

  1. function Main() 
  2. pointer:setReferencePoint(display.CenterReferencePoint) 
  3. pointer.x = display.contentCenterX 
  4. pointer.y = display.contentCenterY 
  5.  
  6. heading:setTextColor(255) 
  7. heading:setReferencePoint(display.CenterReferencePoint) 
  8. Runtime:addEventListener('heading', update) 
  9. end 

步驟十四: 指針旋轉(zhuǎn)

我們利用指向事件(heading)反饋得出的地球磁場(chǎng)結(jié)果來驅(qū)動(dòng)指針旋轉(zhuǎn)。

  1. function update(e) 
  2. -- Pointer Rotation 
  3. pointer.rotation = math.floor(e.magnetic) 

步驟十五: 指向文本&方位

下列代碼用于檢測(cè)當(dāng)前指針的旋轉(zhuǎn)狀態(tài),這有助于使用者借助指南針應(yīng)用讀取當(dāng)前方位。

  1. -- Heading Text & Direction 
  2.  
  3.   
  4.  
  5. if(pointer.rotation >= 0 and pointer.rotation < 23) then 
  6.  
  7. heading.text = math.floor(e.magnetic) .. ' N' 
  8.  
  9. heading:setReferencePoint(display.CenterReferencePoint) 
  10.  
  11. heading.x = display.contentCenterX 
  12.  
  13. elseif(pointer.rotation >= 23 and pointer.rotation < 68) then 
  14.  
  15. heading.text = math.floor(e.magnetic) .. ' NE' 
  16.  
  17. heading:setReferencePoint(display.CenterReferencePoint) 
  18.  
  19. heading.x = display.contentCenterX 
  20.  
  21. elseif(pointer.rotation >= 68 and pointer.rotation < 113) then 
  22.  
  23. heading.text = math.floor(e.magnetic) .. ' E' 
  24.  
  25. heading:setReferencePoint(display.CenterReferencePoint) 
  26.  
  27. heading.x = display.contentCenterX 
  28.  
  29. elseif(pointer.rotation >= 113 and pointer.rotation < 158) then 
  30.  
  31. heading.text = math.floor(e.magnetic) .. ' SE' 
  32.  
  33. heading:setReferencePoint(display.CenterReferencePoint) 
  34.  
  35. heading.x = display.contentCenterX 
  36.  
  37. elseif(pointer.rotation >= 158 and pointer.rotation < 203) then 
  38.  
  39. heading.text = math.floor(e.magnetic) .. ' S' 
  40.  
  41. heading:setReferencePoint(display.CenterReferencePoint) 
  42.  
  43. heading.x = display.contentCenterX 
  44.  
  45. elseif(pointer.rotation >= 203 and pointer.rotation < 248) then 
  46.  
  47. heading.text = math.floor(e.magnetic) .. ' SW' 
  48.  
  49. heading:setReferencePoint(display.CenterReferencePoint) 
  50.  
  51. heading.x = display.contentCenterX 
  52.  
  53. elseif(pointer.rotation >= 248 and pointer.rotation < 293) then 
  54.  
  55. heading.text = math.floor(e.magnetic) .. ' W' 
  56.  
  57. heading:setReferencePoint(display.CenterReferencePoint) 
  58.  
  59. heading.x = display.contentCenterX 
  60.  
  61. elseif(pointer.rotation >= 293 and pointer.rotation < 360) then 
  62.  
  63. heading.text = math.floor(e.magnetic) .. ' NW' 
  64.  
  65. heading:setReferencePoint(display.CenterReferencePoint) 
  66.  
  67. heading.x = display.contentCenterX 
  68.  
  69. end 
  70.  
  71. end 

步驟十六: 調(diào)用Main函數(shù)

為了在應(yīng)用啟動(dòng)時(shí)進(jìn)行初始化,我們需要調(diào)用Main函數(shù)。上述代碼編寫完成之后,我們只需編輯以下內(nèi)容即可實(shí)現(xiàn)初始化需求:

  1. Main() 

步驟十七: 載入界面

當(dāng)我們啟動(dòng)指南針應(yīng)用時(shí),iOS系統(tǒng)會(huì)逐項(xiàng)載入基本數(shù)據(jù),這時(shí)Default.png文件將作為背景圖案顯示在主屏幕當(dāng)中。將這張圖片保存到我們的項(xiàng)目資源文件夾中,這樣它就會(huì)被自動(dòng)添加到Corona的編譯器中。

步驟十八: 圖標(biāo)

現(xiàn)在大家的做圖功力就該派上用場(chǎng)了,快為自己的應(yīng)用打造一款美觀又令人印象深刻的圖標(biāo)吧。在非視網(wǎng)膜屏的iPhone設(shè)備上,圖標(biāo)文件的尺寸應(yīng)為57x57像素,而視網(wǎng)膜屏則需要114x114像素,另外我們還需要為iTunes軟件商店打造一個(gè)512x512的大版圖形。我建議大家先以512x512像素為基準(zhǔn)設(shè)計(jì),然后再縮小成其它兩種尺寸。

大家沒必要在圖標(biāo)制作方面過分投入精力,制作圓角或者添加半透明特效完全是種花蛇添足——因?yàn)閕Tunes與iPhone會(huì)自動(dòng)為你實(shí)現(xiàn)這些效果。

步驟十九: 在模擬環(huán)境下進(jìn)行測(cè)試

是時(shí)候進(jìn)行最終測(cè)試了。打開Corona模擬器,選擇我們的項(xiàng)目文件夾并點(diǎn)擊“打開”。如果一切都依照預(yù)期效果順利運(yùn)行,那么我們就可以著手做***一項(xiàng)工作了。

步驟二十: 創(chuàng)建

在Corona模擬器中,點(diǎn)選文件選項(xiàng)下的創(chuàng)建項(xiàng)并選擇目標(biāo)設(shè)備平臺(tái)。在對(duì)話框中輸入項(xiàng)目數(shù)據(jù)并點(diǎn)擊創(chuàng)建按鈕。等上幾秒,我們的應(yīng)用作品就大功告成啦!接下來大家可以在設(shè)備上進(jìn)行實(shí)機(jī)測(cè)試,或者直接將應(yīng)用發(fā)布到軟件商店中。

總結(jié)

后期測(cè)試總是越多越好,當(dāng)我們對(duì)自己的應(yīng)用作品詳加打磨后,發(fā)行用戶版吧——這也許會(huì)成為輝煌成功的***步!

希望這篇指南文章能夠幫助大家在移動(dòng)開發(fā)的道路上越走越好,感謝朋友們的支持!

原文鏈接: http://mobile.tutsplus.com/tutorials/corona/corona-sdk-create-a-compass-application/

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

2011-09-05 16:08:13

2012-06-14 09:37:17

Ansca MobilCorona跨平臺(tái)工具

2023-02-22 10:15:23

開源指南針開源生態(tài)開源社區(qū)

2010-09-06 09:13:42

DB2表格

2025-04-16 10:00:00

跨平臺(tái)開發(fā)Uniapp開發(fā)

2025-02-17 07:20:00

Flutter 3Flutter開發(fā)

2012-08-09 08:49:30

CoronaCorona SDKCorona SDK游

2012-12-18 13:15:14

Game MinionCorona

2025-03-14 00:53:12

2010-07-23 16:08:38

OPhone平臺(tái)

2013-12-04 14:29:18

Android SDK應(yīng)用程序

2013-12-26 15:47:59

Android SDK應(yīng)用程序

2018-03-02 16:30:30

2020-06-19 11:20:17

開發(fā)避坑支付寶

2014-07-31 16:00:10

KiiXamarin

2011-02-22 15:06:48

openVPN

2013-12-04 13:51:38

Android SDK應(yīng)用程序

2013-12-04 15:11:03

Android SDK應(yīng)用程序

2013-12-04 15:20:33

Android SDK應(yīng)用程序

2015-06-25 13:06:48

大數(shù)據(jù)從選擇到應(yīng)用
點(diǎn)贊
收藏

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