操作提示消息管理器

源码在底下下载:

 

system_msg.txt文件:

 

#道具购买成功
props.buyCode.0000=购买成功,花费{0}{1}!
#道具购买失败,金币不足
props.buyCode.0001=购买失败,您的金币不足!
#道具购买失败,元宝不足
props.buyCode.0002=购买失败,您的元宝不足!

测试文档类:

 

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	
	/**
	 * ...
	 * @author ongsh
	 */
	public class Main extends Sprite 
	{
		
		private var urlLoader:URLLoader;
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			
			urlLoader = new URLLoader();
			urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
			urlLoader.addEventListener(Event.COMPLETE, loadComplete);
			
			urlLoader.load(new URLRequest("system_msg.txt"));
			
		}
		
		private function loadComplete(e:Event):void 
		{
			MessageManager.load("system",urlLoader.data);
			 	
			trace(MessageManager.parseMessage("system",'props.buyCode.0000',[100,'金币']));
			
			trace(MessageManager.parseMessage("system", 'props.buyCode.0001'));
		}
		
	}
	
}

 

消息管理器:

 

package
{
	import flash.utils.Dictionary;
	
	/**
	 * ...
	 * @author ongsh
	 */
	public class MessageManager
	{
		public static var isDebug:Boolean = false;
		
		private static var messages:Dictionary = new Dictionary();
		
		/**
		 * 加载消息文档
		 * 
		 * @param	contentName 文档名称
		 * @param	content 文档内容
		 */
		public static function load(contentName:String,content:String):void
		{
			var lines:Array = content.split("\n");
			
			for(var i:int=0; i< lines.length ; i ++)
			{
				var line:String = lines[i];
				line = StringUtil.trim(line);
				if(line == "")
				{
					//debugTrace(contentName,"的第"+(i+1)+"行是空行!");
					continue;
				}
				if(isAnnotation(line))
				{
					//debugTrace(contentName,"的第"+(i+1)+"行是注释行!");
					continue;
				}
				var key:String;
				var value:String;
				var sep:String = "=";
				var firstSepIndex:int = line.indexOf(sep);
				if(firstSepIndex!=-1)
				{
					key = line.substring(0,firstSepIndex);
					value = line.substring(firstSepIndex+1);
					if(messages[contentName]==null)
					{
						messages[contentName] = new Dictionary();
					}
					messages[contentName][key] = value;
				}else{
					debugTrace(contentName,"的第"+(i+1)+"行格式不正确!");
				}
			}
		}
		
		
		/**
		 * 卸载消息文档
		 * 
		 * @param	contentNam 文档名称
		 */
		public static function unload(contentName:String):void
		{
			if(messages[contentName]!=null)
			{
				messages[contentName] = null;
			}
		}
		
		/**
		 * 
		 * @param	contentName 文档名称
		 * @param	key 键值
		 * @param	argsArray 替换占位符({0},{1}...)的参数
		 * @return
		 */
		public static function parseMessage(contentName:String,key:String,argsArray:Array=null):String
		{
			if(messages[contentName])
			{
				var value:String = messages[contentName][key];
				if(value==null)
				{
					debugTrace(contentName,key,"不存在");
					return null;
				}else{
					var str:String = StringUtil.replacePlaceholder(value,argsArray);
					return str;
				}
				
			}else{
				debugTrace(contentName,"不存在");
				return null;
			}
			
		}
		
		/**
		 * 是否是注释
		 * 
		 * @param	str 字符串
		 * @return
		 */
		private static function isAnnotation(str:String):Boolean
		{
			if(str.charAt(0) == "#")
			{
				return true;	
			}else{
				return false;
			}
		}
		
		private static function debugTrace(...args):void
		{
			if(isDebug)
			{
				trace.apply(null,args);
			}
		}
		
		
	}
}
 

   字符串工具类:

 package

{
	/**
	 * ...
	 * @author ongsh
	 */
	public class StringUtil 
	{
		
		/**
		 * 把字符串中的占位符 {0} {1} 用数组中的字符串替换
		 * @param	source	源字符串
		 * @param	args	待替换字符串数组
		 * @return	替换后的字符串
		 */
		public static function replacePlaceholder(source:String, args:Array):String
		{
			var pattern:RegExp = /{(\d)}/g;
			 
			source =  source.replace(pattern, function():String {
				return args[arguments[1]];
			});
			
			return source;
		}
		
		/**
		 * 替换空白字符分割符
		 * @param	source	源字符串
		 * @param	sep		分隔符
		 * @return	结果字符串
		 */
		public static function replaceBlankSep(source:String,sep:String):String
		{
			//剔除前后空格
			source = trim(source);
			
			return source.replace(/\s+/g,sep);;
		}
		
		
		/**
		 * 剔除字符串前后空白
		 * @param	str	源字符串
		 * @return	结果字符串
		 */
		public static function trim(str:String):String
		{
			return str.replace(/(^\s+)|(\s+$)/g,"");   
		}
		
		
		
	}

}
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值