论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

各国语言字节编译

文章类别:Flash | 发表日期:2008-9-21 20:12:42

  

不知道有没有人和我一样试过在Flash传递非英文字或数字的时候, 出现过乱码呢?? 之前flash8的一位朋友在写了篇无需资料库的聊天室当中有提到过这个问题, 所以这个教程就把每个字节编码成16进制... 这样就不会因为各种语言的编码长度不同而无法正确显示, 非凡适合使用在留言扳和论坛当中哦 :), 好啦...那么就开始吧

String.prototype.encode = function() { //编译部分, 这里使用prototype方便了很多
var s = "";
for (var i = 0; i<this.length; i++) { //根据文字的长度做循环
var d = this.charCodeAt(i); //取得每个字的code代码
var c = this.charAt(i); //取得现有的每个文字
if (d<127) { //这里判定是否为英文字母或数字等Flash player所能接受的文字
s += "\\u"+c; //是的话就存在变量s当中
} else { //假如为非Flash player所能接受的文字的话
s += "
\\u"+len(d.toString(16)); // 先给每个字节前加个分隔字段, 然后再来把code代码以16进制编译, 然后再存放到s变量当中
}
}
return s;
};
function len(str) { //因为不同语言的进制长度不一样, 所以我们必须让他们处于一样的长度
while (str.length<4) { //因为中文和日文的编码长度为最长, 4个字节...所以只要判定是否为4就可以了
str = "0"+str; //假如进制字节小于4的话就在前方加个0, 以达到4个字节
}
return str;
}
String.prototype.decode = function() { //反编译部分
var a = this.split("
\\u"); //使用split把我们设定分隔字段分开来成为数组
var n = a.length; //取得数组的长度
while (--n) {
var s = a[n];
if(s.length > 1) { //判定n假如大于1就代表是非Flash Player所支援的文字, 而进行导向编译
a[n] = String.fromCharCode(parseInt(s.substring(0, 4), 16)); //取得我们设定的4个字节然后返回16进制之前的code代码, 然后再转换成文字
}
}
return a.join(""); //最后把数组在此结合起来成一行文字, 并回传
};

var test = "各国语言的字节都没问题, zzZZ190!@$, 分かりました, ??? ?????, ?????? ???";
var e = test.encode();
trace(e);
trace(e.decode());

是不是各国语言都可以拼凑在一起了呢

视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058