LocalStorage

 

Laya官方文檔的解釋是“用於沒有時間限制的數據存儲”。

w3c上給出的說法是“用於長久保存整個網站的數據,保存的數據沒有過期時間,直到手動去除。”

個人覺得w3c給出的釋義更好理解。

作用就是將數據不設置過期時間,永久保留在本地,除非手動刪除保存的數據。

與sessionStorage類似,但sessionStorage - 用於臨時保存同一窗口(或標籤頁)的數據,在關閉窗口或標籤頁之後將會刪除這些數據。

LocalStorage功能默認是關閉的,但是在Laya引擎初始化的時候,調用了LocalStorage.__init__();

LocalStorage.__init__();裏的代碼爲

		public static function __init__():void {
			if (!_baseClass) {
				_baseClass = Storage;
				Storage.init();
			}
			items = _baseClass.items;
			support = _baseClass.support;
		}

storage的init代碼爲

	public static function init():void {
		__JS__("try{Storage.support = true;Storage.items=window.localStorage;Storage.setItem('laya', '1');Storage.removeItem('laya');} catch(e){Storage.support = false;}if(!Storage.support)console.log('LocalStorage is not supprot or browser is private mode.')");
	}
//__JS__(value:*)裏面的value爲原生JS代碼

也就是引擎在初始化的時候,判斷是否有baseClass存放沒有時間限制的數據,沒有就調用瀏覽器原生storage,判斷瀏覽器是否支持Storage,支持才能在項目中使用LocalStorage。如果有baseClass存在沒有時間限制的存儲數據,則直接存,不用判斷瀏覽器是否支持storage

可以看下對比

	/**
     * storage類使用前都先判斷是否支持support
	 * 獲取指定鍵名的值。
	 * @param key 鍵名。
	 * @return 字符串型值。
	 */
	public static function getItem(key:String):String {
		return support ? items.getItem(key) : null;
	}

		/**
         * 而LocalStorage使用時不用判斷support
		 * 獲取指定鍵名的值。
		 * @param key 鍵名。
		 * @return 字符串型值。
		 */
		public static function getItem(key:String):String {
			return _baseClass.getItem(key);
		}

Laya中LocalStorage提供了以下接口

Method Defined By
   

__init__():Boolean

[static] 

LocalStorage
   

clear():void

[static] 清除本地存儲信息。

LocalStorage
   

getItem(key:String):String

[static] 獲取指定鍵名的值。

LocalStorage
   

getJSON(key:String):Object

[static] 獲取指定鍵名對應的 Object 類型值。

LocalStorage
   

removeItem(key:String):void

[static] 刪除指定鍵名的信息。

LocalStorage
   

setItem(key:String, value:String):void

[static] 存儲指定鍵名和鍵值,字符串類型。

LocalStorage
   

setJSON(key:String, value:Object):void

[static] 存儲指定鍵名及其對應的 Object 類型值。

LocalStorage

 

通過LocalStorage可以實現將數據永久存儲在設備本地。例如劉海屏的設置,玩家設置設備爲劉海屏,下次登錄後,Laya引擎初始化時讀到信息玩家將設備設置成了劉海屏,可以直接按劉海屏進行渲染。當玩家更換設備後,默認不是劉海屏,如果是劉海屏,再次設置即可。這個接口可以存儲一些與設備相關在數據在本地,然後下次調用之前存儲下來的本地數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章