`
ongsh321
  • 浏览: 101064 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

操作提示消息管理器

阅读更多

源码在底下下载:

 

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,"");   
		}
		
		
		
	}

}
 

 

 

分享到:
评论

相关推荐

    消息提示 包含各种样式

    这些工具提供了丰富的API和组件,使得创建和管理消息提示变得简单高效。例如,jQuery的`.ajaxComplete()`可以监听所有Ajax请求的完成,然后显示相应的提示信息。 此外,响应式设计也是现代消息提示必须考虑的方面。...

    使用HOOK拦截任务管理器中直接杀进程的消息

    【使用HOOK拦截任务管理器中直接杀进程的消息】 在IT领域,尤其是系统级编程和安全技术中,有时我们需要保护自己的进程不被意外终止,比如在任务管理器中被直接杀死。这种情况下,可以使用HOOK技术来拦截系统API,...

    仿QQ系统提示消息模块源码

    开发者可以通过阅读和理解这个文本文件中的内容,学习如何在易语言中创建和管理提示消息,例如模拟QQ的消息气泡、声音提示、振动反馈等功能。 在实际应用中,提示消息模块的开发涉及到多个技术点,包括但不限于: ...

    多重操作系统共存的管理员—启动管理器

    如果没有启动管理器,BIOS无法将控制权传递给操作系统,系统将无法正常启动,导致诸如“Missing Operating System”或“Non-System Disk or Disk Error”的错误提示。 计算机的启动流程通常包括以下几个步骤: 1. ...

    索爱w908c短消息管理器

    总的来说,这个“索爱W908c短消息管理器”项目展示了C#在移动设备应用开发中的强大能力,从数据库操作到用户界面设计,再到错误处理和测试,涵盖了软件开发的多个重要环节。对于开发者来说,这样的项目不仅锻炼了...

    RTX消息管理和使用文档

    本文将深入探讨RTX消息管理和使用的关键知识点,帮助用户更好地理解和操作这一系统。 1. **RTX简介**: RTX(Real Time eXchange)是腾讯公司推出的一款企业级通讯软件,提供文本、语音、视频等多种沟通方式,支持...

    c#开发windows设备管理器

    在C#中开发Windows设备管理器涉及到多个技术领域,包括操作系统接口、硬件驱动程序交互、图形用户界面(GUI)设计以及系统编程。Windows设备管理器是操作系统中的一个重要组件,它负责管理和显示计算机上的硬件设备...

    ExtJs消息提示框

    8. **多消息管理**:如果需要同时显示多个消息,`Notification`可以管理这些消息的堆叠和显示顺序。 总之,`Ext.ux.window.Notification`是ExtJs中一个强大的工具,用于创建直观、可定制的用户通知。通过理解和掌握...

    LENOVO联想键盘管理器

    总的来说,联想键盘管理器是联想用户优化键盘操作、提升使用体验的重要辅助工具。通过它可以个性化调整键盘设置,满足不同用户的工作和娱乐需求,让电脑使用更加便捷高效。安装文件"lenovokeyboard_Manager.exe"即是...

    禁用与开启任务管理器

    操作完成后,会弹出消息框提示用户任务管理器的状态。 请注意,修改注册表是一项敏感操作,不当的操作可能导致系统不稳定或功能缺失。因此,在进行此类操作时,应确保有备份或了解操作的潜在风险。 综上所述,...

    javascript 消息提示封装文件

    在JavaScript编程中,消息提示是用户交互的重要组成部分,它能够为用户提供实时反馈,告知操作结果或系统状态。本文将深入探讨“javascript 消息提示封装文件”,了解如何通过前端技术来实现高效、可复用的消息提醒...

    删除文件时提示管理员权限

    总的来说,当遇到“删除文件时提示管理员权限”的问题时,可以尝试使用描述中提及的注册表文件来调整系统设置,但应确保了解操作的风险,并采取适当的预防措施。此外,还可以考虑其他解决方案,比如通过命令提示符以...

    toast和context 消息栏 消息提示 通知

    在Android应用开发中,"Toast"和"Context"是两个非常关键的概念,它们与消息提示和通知紧密相关。本文将详细解析这两个概念及其在消息显示中的应用。 首先,"Toast"是Android系统提供的一种轻量级的通知方式。当...

    男生版短消息提示音

    这个过程可能需要管理员权限,具体步骤会因不同的论坛程序或操作系统而异。 在"help.txt"文件中,很可能是提供了关于如何操作的指南。帮助文档通常包含步骤说明、注意事项或者故障排除信息,帮助用户正确地安装和...

    .net,C#编写的小程序,可以方便操作:控制面板、注册表、打印机、CMD、资源管理器、设备管理器、任务管理器、计算机管理器、垃圾、磁碎整理、组策略和远程连接等。

    5. **资源管理器**:虽然没有提供直接的API来控制资源管理器,但可以通过ShellExecute函数(使用P/Invoke技术调用Windows API)来打开、浏览文件夹或执行文件。 6. **设备管理器**:设备管理器是查看和管理电脑硬件...

    超酷的Qt消息提示框,仿126邮箱登录提示

    Qt提供了多种布局管理器,如QVBoxLayout、QHBoxLayout和QGridLayout,它们可以帮助我们方便地组织窗口部件。在仿126邮箱提示框中,可能需要使用混合布局,将用户名和密码输入框垂直排列,而确认和取消按钮则水平...

    操作系统实验之进程管理

    ### 操作系统中的进程管理 #### 进程的概念 在计算机科学中,**进程**是程序的一次动态执行过程,它是操作系统进行资源分配和调度的基本单位。每个进程都有一个独立的地址空间、一组系统资源(如文件句柄)以及操作...

    又一款论坛用短消息提示音

    标题中的“又一款论坛用短消息提示音”表明这是一个与论坛相关的软件或音频资源,用于在用户收到新短消息时发出提示。这类提示音通常是为了提高用户体验,让用户能够即时感知到有新的信息等待查看。在论坛环境中,...

    c#多线程+队列实现类似QQ消息提示框

    在C#编程中,多线程和队列是两种常用的技术,它们在处理高并发、异步操作以及数据管理方面有着广泛的应用。本项目利用这两种技术实现了一个类似QQ消息提示框的功能,允许程序在右下角弹出消息通知,提供良好的用户...

Global site tag (gtag.js) - Google Analytics