hjr-MUD游戏(二):HTML5-APP客户端编写

搭建

首先选择一种已有服务器搭建好,用HTML5和APICloud(或者其他的可以打包H5app的框架)做客户端,Websocket(telnet/http/socket)与服务器通信,Sqlite3做数据库。

客户端编写有三种方案。

  1. 用多个HTML页面
    这种方式会出现无法在多个页面中通用WebSocket的问题。
  2. 用一个iframe改变src
    可以通在主页面写websocket,但是主页面与子页面部分js代码会冲突
  3. 每个页面放到一个DIV中,然后用js控制DIV显示与否。display:none/block 这样能避开很多问题,就是一个页面内容多了点。
	    function tab(id)
    	{
    		$(".panel_slider").css("display", "none");
    		$("#"+id).css("display", "block");
    	}
    	或者
    	function randomSwitchBtn(tag)
	    {
			if(tag == "world")
			{
				$("#person").css("display","none");
				$("#world").css("display","block");;
			}
			else if(tag == "person")
			{
				$("#world").css("display","none");
				$("#person").css("display","block");
			}
	    }

服务器数据解析

多数服务器传出的数据都是JSON和[String Object]形式的,不同数据格式解析方式不同,比如JSON

 		var decodeData;
 		//是JSON串解码,不是则赋值
		try{
			decodeData = JSON.parse(inputJsonData);
		}
		catch(e){
			decodeData = inputJsonData;
		}

布局

属性展示和功能按键布局主要用Table,这样看起来整齐,那种类似控制台可以不断滚动出一条条的内容的用div,设置成带滚动条和自动定位到最新输出信息。

样式

css可以把很多类似的div用同一个class名字,设置共有的样式,然后在给这些div分别设置id,再给每个id设置如weith,height这样的私有的样式。类似下面这样

/*panel*/
		.panel{border:2px solid #fff;font-size:12px; line-height:24px; word-wrap:break-word; overflow:auto;   word-break:break-all;}			
		
		/*news panel*/
		#panel_news{width:auto;height:180px;}	
		/*describe panel*/		
		#panel_describe{ width:auto;height:70px;position:relative; top:15px;}

弹窗

推荐用 layer 这种框架 做弹窗相关功能,也可以手写,如下



//js代码
   function openWin()
   {
   		$("#win_thingsShow").css("display","block")
   }
   function hideWin()
   {
   		$("#win_thingsShow").css("display","none")
   		$("#win_thingsShow_context").html("");
   }

宽度和高度很多可以用x% 百分数代替具体数值,想要div居中,主要是父DIVtext-aline:center,子DIV margin:auto,居于底部的话position: fixed;bottom: 0px;

数据接受后处理方法

可以写一个xxxModel和一个xxxProcess,xxx是接受的JSON数据的key或二进制数据的头部,然后用类似于简单工厂+反射的效果

比如websocked收到的JSON数据触发方法,方法里xxx自动变成的key,然后简单工厂创建keyModel数据模型对象,和先编写好keyProcess方法,再反射实现它,js可以这样实现:

dataModel = new window[type+"Model"](context);//类似与简单工厂
eval("this."+type+"Process"+"()");//类似于反射

这样可以避免写switch做大量判断,

你可能感兴趣的:(游戏开发,MUD,新时代下的MUD游戏开发)