·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]AS3中文转拼音排序问题的源代码示例

时间:2012-12-22 22:36blueidea.com
在as3中load一个gif的图片,结果发现只能显示第一

[AS3]AS3中文转拼音排序问题的源代码示例

  1. package 
  2. import flash.utils.ByteArray; 
  3.  
  4. /** 
  5. * 模块功能: 
  6. * 修改时间:2010-11-16 下午03:08:25 
  7. * 程序编制: 
  8. * trace(Chinese.convertChar("中国人").toUpperCase(), Chinese.convertString("中国人")); 
  9.    //-- 
  10.    var arr1:Array = ["中国人", "日本人", "韩国人"]; 
  11.    trace(arr1); 
  12.    //trace(Chinese.sort(arr1)); 
  13.    var arr2:Array = [{label:"中国人2"}, {label:"日本人2"}, {label:"韩国人2"}]; 
  14.    trace(arr2); 
  15.    trace(Chinese.sort(arr2, "label")); 
  16. */ 
  17. public class Chinese 
  18.    public function Chinese() 
  19.    { 
  20.     throw new Error("单例..."); 
  21.    } 
  22.  
  23.    /** 
  24.    * 获取一串中文的拼音字母 
  25.    * @param chinese Unicode格式的中文字符串 
  26.    * @return 
  27.    * 
  28.    */   
  29.    public static function convertString(chinese:String):String 
  30.    { 
  31.     var len:int = chinese.length; 
  32.     var ret:String = ""
  33.     for (var i:int = 0; i < len; i++) 
  34.     { 
  35.      ret += convertChar(chinese.charAt(i)); 
  36.     } 
  37.     return ret; 
  38.    } 
  39.  
  40.    /** 
  41.    * 获取中文第一个字的拼音首字母 
  42.    * @param chineseChar 
  43.    * @return 
  44.    * 
  45.    */   
  46.    public static function convertChar(chineseChar:String):String 
  47.    { 
  48.     var bytes:ByteArray = new ByteArray 
  49.     bytes.writeMultiByte(chineseChar.charAt(0), "cn-gb"); 
  50.     var n:int = bytes[0] << 8
  51.     n += bytes[1]; 
  52.     if (isIn(0xB0A1, 0xB0C4, n)) 
  53.      return "a"; 
  54.     if (isIn(0XB0C5, 0XB2C0, n)) 
  55.      return "b"; 
  56.     if (isIn(0xB2C1, 0xB4ED, n)) 
  57.      return "c"; 
  58.     if (isIn(0xB4EE, 0xB6E9, n)) 
  59.      return "d"; 
  60.     if (isIn(0xB6EA, 0xB7A1, n)) 
  61.      return "e"; 
  62.     if (isIn(0xB7A2, 0xB8c0, n)) 
  63.      return "f"; 
  64.     if (isIn(0xB8C1, 0xB9FD, n)) 
  65.      return "g"; 
  66.     if (isIn(0xB9FE, 0xBBF6, n)) 
  67.      return "h"; 
  68.     if (isIn(0xBBF7, 0xBFA5, n)) 
  69.      return "j"; 
  70.     if (isIn(0xBFA6, 0xC0AB, n)) 
  71.      return "k"; 
  72.     if (isIn(0xC0AC, 0xC2E7, n)) 
  73.      return "l"; 
  74.     if (isIn(0xC2E8, 0xC4C2, n)) 
  75.      return "m"; 
  76.     if (isIn(0xC4C3, 0xC5B5, n)) 
  77.      return "n"; 
  78.     if (isIn(0xC5B6, 0xC5BD, n)) 
  79.      return "o"; 
  80.     if (isIn(0xC5BE, 0xC6D9, n)) 
  81.      return "p"; 
  82.     if (isIn(0xC6DA, 0xC8BA, n)) 
  83.      return "q"; 
  84.     if (isIn(0xC8BB, 0xC8F5, n)) 
  85.      return "r"; 
  86.     if (isIn(0xC8F6, 0xCBF0, n)) 
  87.      return "s"; 
  88.     if (isIn(0xCBFA, 0xCDD9, n)) 
  89.      return "t"; 
  90.     if (isIn(0xCDDA, 0xCEF3, n)) 
  91.      return "w"; 
  92.     if (isIn(0xCEF4, 0xD188, n)) 
  93.      return "x"; 
  94.     if (isIn(0xD1B9, 0xD4D0, n)) 
  95.      return "y"; 
  96.     if (isIn(0xD4D1, 0xD7F9, n)) 
  97.      return "z"; 
  98.     return "\0"; 
  99.    } 
  100.  
  101.    private static function isIn(from:int, to:int, value:int):Boolean 
  102.    { 
  103.     return ((value >= from) && (value <= to)); 
  104.    } 
  105.  
  106.    /** 
  107.    * 是否为中文 
  108.    * @param chineseChar 
  109.    * @return 
  110.    * 
  111.    */   
  112.    public static function isChinese(chineseChar:String):Boolean 
  113.    { 
  114.     if (convertChar(chineseChar) == "\0") 
  115.     { 
  116.      return false; 
  117.     } 
  118.     return true; 
  119.    } 
  120.  
  121.    /** 
  122.    * 中文排序 
  123.    * @param arr 列表数组 
  124.    * @param key 键名(键值数组时使用) 
  125.    * @return 
  126.    * 
  127.    */   
  128.    public static function sort(arr:Array, key:String = ""):Array 
  129.    { 
  130.     var byte:ByteArray = new ByteArray(); 
  131.     var sortedArr:Array = []; 
  132.     var returnArr:Array = []; 
  133.     var item:*; 
  134.     for each (item in arr) 
  135.     { 
  136.      if (key == "") 
  137.      { 
  138.       byte.writeMultiByte(String(item).charAt(0), "gb2312"); 
  139.      } 
  140.      else 
  141.      { 
  142.       byte.writeMultiByte(String(item[key]).charAt(0), "gb2312"); 
  143.      } 
  144.     } 
  145.     byte.position = 0
  146.     var len:int = byte.length / 2; 
  147.     for (var i:int = 0; i < len; i++) 
  148.     { 
  149.      sortedArr[sortedArr.length] = {a: byte[i * 2], b: byte[i * 2 + 1], c: arr[i]}; 
  150.     } 
  151.     sortedArr.sortOn(["a", "b"], [Array.DESCENDING | Array.NUMERIC]); 
  152.     for each (var obj:Object in sortedArr) 
  153.     { 
  154.      returnArr[returnArr.length] = obj.c; 
  155.     } 
  156.     return returnArr; 
  157.    } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器