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 ];

		}

	};

};

 

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