three.js 場景編輯器 源碼解析(二)

        three.js場景編輯器的一些初始配置信息存放在editor\js\Config.js下,當第一次加載的時候,編輯器會使用這個配置文件設置默認配置,並將這些配置信息存儲在瀏覽器的window.localStorage,當再次打開編輯器時會從瀏覽器本地的window.localStorage讀取這些配置,特別是當用戶自己設定了一些配置項時很有用。

//配置的內容,初始化時會依照這些內容進行初始化,修改完成保存,下次打開時會按照改變的東西初始化
var Config = function () {

	var name = 'threejs-editor';

	//默認初始化的內容
	var storage = {
		'language': 'en',	//默認英語

		'autosave': true,	//默認自動保存
		'theme': 'css/light.css',	//默認主題

		'project/title': '',	//默認標題
		'project/editable': false,	//發佈的場景是否有編輯按鈕

		'project/renderer': 'WebGLRenderer',	//默認的渲染方式
		'project/renderer/antialias': true,		//默認的抗鋸齒
		'project/renderer/shadows': true,		//默認陰影開啓轉檯

		'project/vr': false,					//默認vr方式

		'settings/history': false,				//默認歷史

		'settings/shortcuts/translate': 'w',	//默認w爲平移
		'settings/shortcuts/rotate': 'e',		//默認e爲旋轉
		'settings/shortcuts/scale': 'r',		//默認r爲縮放
		'settings/shortcuts/undo': 'z',			//默認z爲撤銷
		'settings/shortcuts/focus': 'f'			//默認f爲設置焦點
	};

	//獲取localstring中的'threejs-editor'相關的值
	if ( window.localStorage[ name ] === undefined ) {			//如果沒有定義

		window.localStorage[ name ] = JSON.stringify( storage );	//存儲默認值

	} else {	//如果已經定義

		var data = JSON.parse( window.localStorage[ name ] );	   //獲取瀏覽器localstring中的存儲的值

		for ( var key in data ) {	
			//重新設置
			storage[ key ] = data[ key ];

		}

	}

	//返回接口
	return {
		//獲取信息
		getKey: function ( key ) {

			return storage[ key ];

		},
		//設置信息
		setKey: function () { // key, value, key, value ...

			for ( var i = 0, l = arguments.length; i < l; i += 2 ) {
				//存儲信息
				storage[ arguments[ i ] ] = arguments[ i + 1 ];

			}
			//保存到瀏覽器
			window.localStorage[ name ] = JSON.stringify( storage );
			//打印信息
			console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved config to LocalStorage.' );

		},

		clear: function () {
			//清空瀏覽器中存儲的信息
			delete window.localStorage[ name ];

		}

	};

};

 

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