使用Flash的XMLSocket与Servlet建立长连接(8,net.fla的辅助类)
注意以下的是flash的.as文件,必须放到com/inet/util/目录下, 否则net.fla不能被编译
/*
* $RCSfile: com.inet.util.CharsUtil,v $
* $Revision: 1.1 $
*
* Copyright (C) 2005 inet, Inc. All rights reserved.
*
* This software is the proprietary information of inet, Inc.
* Use is subject to license terms.
*
* @author: chenyankui
* @Date: 2006-9-28
*/
class com.inet.util.CharsUtil
{
public static function toCharArray(src:String):Array
{
var array:Array = new Array();
if(src != null && src != undefined)
{
for(var i = 0; i < src.length; i++)
{
array.push(src.charAt(i));
}
}
return array;
}
public static function charArray2String(array:Array):String
{
var x = "";
for(var i=0; i<array.length; i++)
{
x += array[i];
}
return x;
}
}
/*
* $RCSfile: com.inet.util.UUID,v $
* $Revision: 1.1 $
*
* Copyright (C) 2005 inet, Inc. All rights reserved.
*
* This software is the proprietary information of inet, Inc.
* Use is subject to license terms.
*
* @author: chenyankui
* @Date: 2006-9-28
*/
class com.inet.util.UUID
{
// ActionScript的toString(16)对于大数字返回的字符串会有一个前缀"-"
// 下面减去的数是我写这个程序的时间
private static var SEEK:Number = new Date().getTime() - 1159366701976;
public static function getUUID():String
{
return (UUID.SEEK++).toString(16).toUpperCase();
}
}
/*
* $RCSfile: com.inet.util.DateFormat,v $
* $Revision: 1.1 $
*
* Copyright (C) 2005 inet, Inc. All rights reserved.
*
* This software is the proprietary information of inet, Inc.
* Use is subject to license terms.
*
* @author: chenyankui
* @Date: 2006-9-28
*/
import com.inet.util.CharsUtil;
class com.inet.util.DateFormat
{
private var pattern:String = null;
private var formatSymbols:String = null;
public function DateFormat(_pattern:String, _formatSymbols:String)
{
if(_pattern == null || _pattern == undefined)
{
this.pattern = "yyyy-MM-dd HH:mm:ss SSS";
}
else
{
this.pattern = _pattern;
}
if(_formatSymbols == null || _formatSymbols == undefined)
{
this.formatSymbols = "yMdHmsS";
}
else
{
this.formatSymbols = _formatSymbols;
}
}
public function format(date:Date):String
{
var time = DateFormat.getTime(date);
// 标记存入数组
var cs = CharsUtil.toCharArray(this.formatSymbols);
// 格式存入数组
var fs = CharsUtil.toCharArray(this.pattern);
// 构造数组
var ds = CharsUtil.toCharArray(time);
// 标志年月日的结束下标
var y = 3;
var M = 6;
var d = 9;
var H = 12;
var m = 15;
var s = 18;
var S = 22;
// 逐位替换年月日时分秒和毫秒
for(var i = fs.length - 1; i > -1; i--)
{
switch (fs[i])
{
case cs[0]:
{
fs[i] = ds[y--];
break;
}
case cs[1]:
{
fs[i] = ds[M--];
break;
}
case cs[2]:
{
fs[i] = ds[d--];
break;
}
case cs[3]:
{
fs[i] = ds[H--];
break;
}
case cs[4]:
{
fs[i] = ds[m--];
break;
}
case cs[5]:
{
fs[i] = ds[s--];
break;
}
case cs[6]:
{
fs[i] = ds[S--];
break;
}
}
}
return CharsUtil.charArray2String(fs);
}
public function parse(date:String):Date
{
var y:String = "";
var M:String = "";
var d:String = "";
var H:String = "";
var m:String = "";
var s:String = "";
var S:String = "";
// 标记存入数组
var cs:Array = CharsUtil.toCharArray(this.formatSymbols);
// 格式存入数组
var ds:Array = CharsUtil.toCharArray(this.pattern);
// date = "2005-08-22 12:12:12 888";
// format = "yyyy-MM-dd HH:mm:ss SSS";
// sign = "yMdHmsS";
var size:Number = Math.min(ds.length, date.length);
for(var i = 0; i < size; i++)
{
switch (ds[i])
{
case cs[0]:
{
y += date.charAt(i);
break;
}
case cs[1]:
{
M += date.charAt(i);
break;
}
case cs[2]:
{
d += date.charAt(i);
break;
}
case cs[3]:
{
H += date.charAt(i);
break;
}
case cs[4]:
{
m += date.charAt(i);
break;
}
case cs[5]:
{
s += date.charAt(i);
break;
}
case cs[6]:
{
S += date.charAt(i);
break;
}
}
}
var __y:Number = 0;
var __M:Number = 0;
var __d:Number = 0;
var __H:Number = 0;
var __m:Number = 0;
var __s:Number = 0;
var __S:Number = 0;
if(y.length > 0) __y = parseInt(y);
if(M.length > 0) __M = parseInt(M);
if(d.length > 0) __d = parseInt(d);
if(H.length > 0) __H = parseInt(H);
if(m.length > 0) __m = parseInt(m);
if(s.length > 0) __s = parseInt(s);
if(S.length > 0) __S = parseInt(S);
return new Date(__y, __M - 1, __d, __H, __m, __s, __S);
//return new Date();
}
// 返回当前时间
public static function getTime(date:Date):String
{
if(date == null)
{
date = new Date();
}
var y:Number = date.getFullYear();
var M:Number = date.getMonth() + 1;
var d:Number = date.getDate();
var h:Number = date.getHours();
var m:Number = date.getMinutes();
var s:Number = date.getSeconds();
var S:Number = date.getTime() % 1000;
var html:String = y + "-";
if(M < 10)
{
html += "0";
}
html += M + "-";
if(d < 10)
{
html += "0";
}
html += d + " ";
if(h < 10)
{
html += "0";
}
html += h + ":";
if(m < 10)
{
html += "0";
}
html += m + ":";
if(s < 10)
{
html += "0";
}
html += s.toString();
html += " ";
if(S < 100)
{
html += "0"
}
if(S < 10)
{
html += "0";
}
html += S.toString();
return html;
}
}