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

離線iOS應用的HTML 5制作指南

移動開發(fā) iOS
在本文中作者會詳細說明如何制作離線HTML 5的iOS應用。更具體地說,作者將演示《俄羅斯方塊》游戲制作過程。

你或許已沮喪許久。眾多Objective-C開發(fā)高手憑借制作iOS應用取得顯著成就。你或許嘗試閱讀iOS應用開發(fā)指南,但Objective-C或類似語言確實沒那么簡單。

我不是說應該放棄目標,你最終定能夠?qū)崿F(xiàn)。但你同時還有其他選擇。

憑借已有技術,你完全能夠勝任如下內(nèi)容:HTML 5、CSS、和JavaScript。

作者會詳細說明如何制作離線HTML 5 iOS應用。更具體地說,作者將演示《俄羅斯方塊》游戲制作過程。

離線應用

所謂離線是什么意思?是指我們擁有定制圖標、定制啟動屏幕以及原生外觀和風格,你能夠在手機沒連網(wǎng)情況下使用應用。

應用離線功能應保持一致,就像正常原生手機應用。

此開發(fā)指南是就iPhone而言,但其實也適用采取HTML5瀏覽器的手機設備。

是的,不妨參考下圖,應用底部沒有URL欄和導航圖標,看起來就像個原生手機應用。

 

final result html5 iphone from sixrevisions.com

final result html5 iphone from sixrevisions.com

預先準備工作

你要能夠訪問服務器,以改變文件HTTP Headers信息。原因是我們需充分利用HTML5的離線緩存功能。

Apache在此表現(xiàn)突出,你只需在.htaccess文件中添加內(nèi)容便能夠順利實現(xiàn)操作。這是使用htaccess修改HTTP標題信息指南。

另一需要完成的任務是確保iPhone 瀏覽器Safari設有調(diào)試欄。進入iPhone Settings.app > Safari > Developer,啟動調(diào)試控制臺。這能夠幫你辨識潛在JavaScript錯誤。

完成應用創(chuàng)建后,應關閉該功能,這樣你才能在測試HTML5 iPhone應用過程中獲得完整體驗。

 

debug console iphone from sixrevisions.com

debug console iphone from sixrevisions.com#p#

應用方面

圖標和啟動屏幕

圖像大小為57 X 57像數(shù)。

iPhone將會繞行圖標四角,創(chuàng)造陰影效果,給圖標添加光澤。

圖標應采用PNG或JPG格式。

以下是我制作俄羅斯方塊游戲采用的圖標。

 

iphone icon from sixrevisions.com

iphone icon from sixrevisions.com

啟動頁面應是320 X 320像數(shù),且需采用PNG或JPG格式。

下面是我采用的啟動屏幕。

 

opening screen from sixrevisions.com

opening screen from sixrevisions.com

項目開始前的幾大建議

規(guī)模小、數(shù)量少和構思簡單。

◆ 規(guī)模小:這是開發(fā)手機應用,所以即便能夠緩存內(nèi)容,壓縮文件大小依然是明智之舉。

◆ 數(shù)量少:應盡量減少處理文件數(shù)量。

◆ 構思簡單:先從簡單想法入手。減少覆蓋范圍,以便項目能夠快速落實。

應用緩存

這是個新標準,我們這里將詳細說明。

應用緩存讓瀏覽器能夠提前決定網(wǎng)頁所需文件,以順利實現(xiàn)網(wǎng)頁運作。

應用會存儲這些文件。文件語法很簡單:羅列文件在文件清單(/picture.png)中的絕對(游戲邦注:例如http://yourwebserver.com/picture.png)或相對位置。瀏覽器離線狀態(tài)也會保存這些文件。

你也可以羅列少量不應保存的URL鏈接,但這和離線應用無關。

整個操作最關鍵的部分是清單文件(文件應進行線下保存)需以Header格式傳輸。這就是為什么你需訪問能夠設定HTTP標題的網(wǎng)頁瀏覽器。

頁面大小

設計應用的一個注意事項:應用模式的頁面大小是320X460像數(shù)。網(wǎng)頁模式的頁面大小是320X356像數(shù)。這會影響離線HTML5應用的用戶界面。

下面我們就來逐一闡述它們不同之處。

 

iphone ui side comp from sixrevisions.com

iphone ui side comp from sixrevisions.com

HTML

這是個真實瀏覽器,所以HTML完全相同。iPhone瀏覽器也是處在HTML5前端。接著就來看其中具體要求。

想要獲悉更多深入細節(jié),參考Safari Developer的以下兩個內(nèi)容:

◆ Safari HTML Reference

◆ Safari CSS Reference

應用編碼

應用首先要定義標記。下面就是我制作的《俄羅斯方塊》游戲的標記。 

首先注意文檔類型,HTML5表現(xiàn)是否出色?

標簽的manifest=”cache.manifest”屬性就是瀏覽器判斷我們離線網(wǎng)頁存儲方式的依據(jù)。

以下是蘋果在HTML5頁面的專屬標記。我們將逐一闡述:

◆ apple-mobile-web-app-capable:這表明我們是真的想要制作離線應用。

◆ apple-mobile-web-app-status-bar-style:這隱藏應用離線狀態(tài)欄和導航欄。

◆ apple-touch-icon:這是圖像指示器(游戲邦注:主要針對那些想要轉(zhuǎn)換成圖標的圖像)。

◆ apple-touch-startup-image:這是指向啟動頁面的URL。

需注意的是你需把CSS和JavaScript分別置于頂端和底端。

CSS(層疊樣式表)

這幾乎和標準網(wǎng)頁相差無幾。這里有些Webkit CSS具體規(guī)則,能夠用來制作動畫之類的美妙內(nèi)容,但這不過是應急指南,不在文章陳述范圍。

CSS不過是普通頁面。

 

CSS fom sixrevisions.com

CSS fom sixrevisions.com

這個頁面是網(wǎng)頁區(qū)分元素,確保能夠匹配iPhone視口。

JavaScript

我使用Dalton Ridenhour修訂版JavaScript,我是在Github發(fā)現(xiàn)的。JS原本只瞄準標準網(wǎng)頁瀏覽器。我唯一要調(diào)整的是讓其不再要求具備關鍵字。

總之,JS功能在iPhone設備運作良好(游戲邦注:雖然有少數(shù)例外情況)。不妨看看iPhone設備的鼠標指向功能,但若沒有標準定點設備(如鼠標),其功能顯然無法實現(xiàn)。

把握所有內(nèi)容后,你便能夠進行測試,打開iPhone設備的index.html文件,便實現(xiàn)運作。

接著就是使用真實網(wǎng)頁瀏覽器(游戲邦注:其能夠設置cache.manifest背景)提供服務。

然后你就能把該功能添加至主頁面,植入所有附加內(nèi)容,查看離線模式。#p#

離線數(shù)據(jù)

除具備離線保存功能外,你還要能在離線數(shù)據(jù)中庫存儲用戶數(shù)據(jù)。每個用戶或頁面數(shù)據(jù)都有兩個主要API(游戲邦注:應用程序界面)。首先是localStorage,這是個具備簡單API的便捷鍵值商店。例如,你能夠使用其存儲用戶積分。

 

localStorage from sixrevisions.com

localStorage from sixrevisions.com

其次就是離線SQL引擎,這是網(wǎng)頁數(shù)據(jù)庫。其API更先進,以下部分僅供參考。

  1. // Try and get a database object 
  2.  
  3. var db; 
  4.  
  5. try { 
  6.  
  7. if (window.openDatabase) { 
  8.  
  9. db = openDatabase(“NoteTest”, “1.0″, “HTML5 Database API example”, 200000); 
  10.  
  11. if (!db) 
  12.  
  13. alert(“Failed to open the database on disk. This is probably because the version was / 
  14.  
  15. bad or there is not enough space left in this domain’s quota”); 
  16.  
  17. } else 
  18.  
  19. alert(“Couldn’t open the database. Please try with a WebKit nightly with this feature enabled”); 
  20.  
  21. } catch(err) { } 
  22.  
  23. // Check and see if you need to initalize the DB 
  24.  
  25. db.transaction(function(tx) { 
  26.  
  27. tx.executeSql(“SELECT COUNT(◆) FROM WebkitStickyNotes”, [], function(result) { 
  28.  
  29. loadNotes(); 
  30.  
  31. }, function(tx, error) { 
  32.  
  33. tx.executeSql(“CREATE TABLE WebKitStickyNotes (id REAL UNIQUE, note TEXT, timestamp / 
  34.  
  35. REAL, left TEXT, top TEXT, zindex REAL)”, [], function(result) { 
  36.  
  37. loadNotes(); 
  38.  
  39. }); 
  40.  
  41. }); 
  42.  
  43. }); 
  44.  
  45. // Insert a test Note. 
  46.  
  47. var note = { 
  48.  
  49. id: “1″, 
  50.  
  51. text:” This is a test note”, 
  52.  
  53. timestamp: “112123000″, 
  54.  
  55. left:10, 
  56.  
  57. top:10, 
  58.  
  59. zIndex:2 
  60.  
  61. }; 
  62.  
  63. db.transaction(function (tx) 
  64.  
  65.  
  66. tx.executeSql(“INSERT INTO WebKitStickyNotes (id, note, timestamp, left, top, zindex) VALUES / 
  67.  
  68. (?, ?, ?, ?, ?, ?)”, [note.id, note.text, note.timestamp, note.left, note.top, note.zIndex]); 
  69.  
  70. }); 
  71.  
  72. // Get all the notes out of the database. 
  73.  
  74. db.transaction(function(tx) { 
  75.  
  76. tx.executeSql(“SELECT id, note, timestamp, left, top, zindex / 
  77.  
  78. FROM WebKitStickyNotes”, [], function(tx, result) 
  79.  
  80.  
  81. for (var i = 0; i < result.rows.length; ++i) { 
  82.  
  83. var row = result.rows.item(i); 
  84.  
  85. var note = new Note(); 
  86.  
  87. note.id = row['id']; 
  88.  
  89. note.text = row['note']; 
  90.  
  91. note.timestamp = row['timestamp']; 
  92.  
  93. note.left = row['left']; 
  94.  
  95. note.top = row['top']; 
  96.  
  97. note.zIndex = row['zindex']; 
  98.  
  99. if (row['id'] > highestId) 
  100.  
  101. highestId = row['id']; 
  102.  
  103. if (row['zindex'] > highestZ) 
  104.  
  105. highestZ = row['zindex']; 
  106.  
  107.  
  108. if (!result.rows.length) 
  109.  
  110. newNote(); 
  111.  
  112. }, function(tx, error) { 
  113.  
  114. alert(‘Failed to retrieve notes from database – ‘ + error.message); 
  115.  
  116. return; 
  117.  
  118. }); 
  119.  
  120. }); 

總結

離線HTML應用有很多可供挖掘的空間。諸如《俄羅斯方塊》之類的游戲已成為可能。你最好想想自己想要制作的內(nèi)容,確定其是否適應離線應用模式。《Quake 3 Arena》顯然是行不通的.

 

責任編輯:佚名 來源: 游戲邦
相關推薦

2012-05-24 15:49:35

HTML5

2011-06-07 15:14:09

HTML 5

2009-05-08 13:46:38

JavaScriptHTML5離線存儲

2018-05-30 08:54:00

離線存儲HTML5

2013-10-09 09:10:28

移動應用開發(fā)NativeHybrid

2011-11-30 15:14:32

HTML 5

2012-05-23 09:49:50

HTML5

2012-03-09 13:52:28

Adob??e AIRiOS

2011-05-11 12:59:18

HTML5

2012-02-01 09:30:54

HTML 5

2012-12-03 13:53:38

IBMdW

2012-12-07 10:20:56

IBMdW

2011-02-13 13:04:00

HTML 5Web

2009-07-02 15:01:07

HTML 5

2011-12-09 21:16:18

iOS

2012-02-14 16:51:07

HTML 5

2012-05-23 13:00:37

HTML5

2009-09-08 13:47:11

SproutCoreHTML 5應用框架

2010-09-03 08:58:01

HTML 5

2012-05-15 09:42:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品福利 | 正在播放国产精品 | 欧美久久久久 | 国产成人精品一区二区三区视频 | 免费影视在线观看 | 中文字幕在线免费 | 日韩欧美在线观看 | 91亚洲国产 | 久久高清免费视频 | 久久精品亚洲欧美日韩精品中文字幕 | 色婷婷婷婷色 | 超黄毛片 | 91在线视频免费观看 | 精品成人在线 | 亚洲精品日韩在线 | 色偷偷噜噜噜亚洲男人 | 91亚洲一区 | 四季久久免费一区二区三区四区 | 日韩欧美中文在线 | 国产精品成人av | 男女午夜激情视频 | 91资源在线 | 欧美一区 | 亚av在线 | 国产高清精品在线 | 天天天操| 日韩免费视频一区二区 | 国产一级在线视频 | 黄网站免费在线看 | 成人国产在线观看 | 婷婷丁香在线视频 | 欧美亚洲国产一区二区三区 | 午夜精品一区二区三区在线观看 | 成人国产精品久久久 | 成人精品一区二区三区 | 毛片视频免费 | 欧美五月婷婷 | 中文字幕亚洲一区 | 精品中文在线 | 日韩成人在线免费观看 | 欧美中文字幕一区 |