API Docs for: 最后更新日期:2014年11月10日
Google搜索   
Show:

File: LMvcLoader.js

/** @language chinese
 * 用来读取各种文件。
 * @class LMvcLoader
 * @constructor
 * @since 1.8.4
 * @public
 */
var LMvcLoader = (function() {
	function LMvcLoader(controller) {
		this.controllerClass = controller;
	}
	LMvcLoader.prototype = {
		controller : function(names, callback) {
			var self = this;
			self.loadJs("Controllers", "Controller", names, callback);
		},
		/** @language chinese
		 * 读取一个或者多个模型。
		 * @method model
		 * @param {string|Array} names 一个或者多个模型.
		 * @param {Function} callback 回调函数
		 * @since 1.8.4
		 * @example
		 *	//下面代码用来读取MapModel.js,CharaModel.js两个模型
		 *	ExampleController.prototype.loadModel = function(){
		 *		this.load.model(["Map","Chara"],this.loadModelComplete);
		 *	}
		 *	ExampleController.prototype.loadModelComplete = function(){
		 *		var mapModel = new MapModel(this);
		 *	}
		 * @public
		 */
		model : function(names, callback) {
			var self = this;
			self.loadJs("Models", "Model", names, callback);
		},
		/** @language chinese
		 * 读取一个或者多个视图。
		 * @method view
		 * @param {string|Array} names 一个或者多个视图.
		 * @param {Function} callback 回调函数
		 * @since 1.8.4
		 * @example
		 *	//下面代码用来读取MapView.js,CharaView.js两个视图
		 *	this.load.view(["Map","Chara"],this.loadViewComplete);
		 * @public
		 */
		view : function(names, callback) {
			var self = this;
			self.loadJs("Views", "View", names, callback);
		},
		/** @language chinese
		 * 读取多张图片。
		 * @method image
		 * @param {Array} datas 参考LLoadManage的load函数的list参数.
		 * @param {Function} callback 回调函数
		 * @since 1.8.4
		 * @public
		 */
		image : function(datas, callback) {
			var self = this;
			LMvc.loading.visible = true;
			var loadData = [];
			var loadDataCheck = {};
			for (var i = 0; i < datas.length; i++) {
				if (loadDataCheck[datas[i]["name"]] || LMvc.datalist[datas[i]["name"]])
					continue;
				loadData.push(datas[i]);
				loadDataCheck[datas[i]["name"]] = 1;
			}
			LLoadManage.load(loadData, function(progress) {
				LMvc.loading.visible = true;
				LMvc.loading.setProgress(progress);
			}, function(result) {
				for (var k in result) {
					LMvc.datalist[k] = result[k];
				}
				callback.apply(self.controllerClass, []);
				if (!LMvc.loadingLock)
					LMvc.loading.visible = false;
			});
		},
		/** @language chinese
		 * 读取一个或者多个设置文件。设置文件的名字以Config结尾,读取设置文件的时候无需添加Config结尾。
		 * @method config
		 * @param {string | Array} names 一个或者多个设置文件.
		 * @param {Function} callback 回调函数
		 * @since 1.8.4
		 * @example
		 *	//下面代码用来读取mapConfig.js,charaConfig.js两个设置文件
		 *	this.load.config(["map","chara"],this.loadConfigComplete);
		 * @public
		 */
		config : function(names, callback) {
			var self = this;
			self.loadJs("config", "Config", names, callback);
		},
		/** @language chinese
		 * 读取一个或者多个外部类库。
		 * @method library
		 * @param {string | Array} names 一个或者多个外部类库.
		 * @param {Function} callback 回调函数
		 * @since 1.8.4
		 * @example
		 *	//下面代码用来读取Face.js,Card.js两个设置文件
		 *	this.load.library(["Face","Card"],this.loadLibraryComplete);
		 * @public
		 */
		library : function(names, callback) {
			var self = this;
			self.loadJs("Libraries", null, names, callback);
		},
		/** @language chinese
		 * 读取一个或者多个辅助函数文件。
		 * @method helper
		 * @param {string | Array} names 一个或者多个辅助函数文件.
		 * @param {Function} callback 回调函数
		 * @since 1.8.4
		 * @example
		 *	//下面代码用来读取Cost.js,UI.js两个辅助函数文件
		 *	this.load.helper(["Cost","UI"],this.loadHelperComplete);
		 * @public
		 */
		helper : function(names, callback) {
			var self = this;
			self.loadJs("Helpers", null, names, callback);
		},
		loadJs : function(type, classType, names, callback) {
			var self = this, list = [], i, l;
			if ( typeof names == "string")
				names = [names];
			for ( i = 0, l = names.length; i < l; i++) {
				var name = names[i] + ( classType ? classType : "");
				if (window[name]) {
					continue;
				}
				list.push({
					path : LMvc.MVC_PATH + ( type ? (type + "/") : "") + name + ".js",
					type : "js"
				});
			}
			LMvc.loading.visible = true;
			LLoadManage.load(list, function(progress) {
				LMvc.loading.visible = true;
				LMvc.loading.setProgress(progress);
			}, function(result) {
				callback.apply(self.controllerClass, []);
				if (!LMvc.loadingLock)
					LMvc.loading.visible = false;
			});
		}
	};
	return LMvcLoader;
})();