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引擎初始化时读到信息玩家将设备设置成了刘海屏,可以直接按刘海屏进行渲染。当玩家更换设备后,默认不是刘海屏,如果是刘海屏,再次设置即可。这个接口可以存储一些与设备相关在数据在本地,然后下次调用之前存储下来的本地数据。

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