PageRenderTime 24ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/1/plugins/Speeder.as

http://tai-qian.googlecode.com/
ActionScript | 205 lines | 147 code | 55 blank | 3 comment | 7 complexity | 970f1a6cb6e1c6b1b4419eabf33060eb MD5 | raw file
  1. package {
  2. import flash.display.*;
  3. import flash.events.*;
  4. import flash.net.*;
  5. import flash.utils.*;
  6. import flash.system.*;
  7. public class Speeder extends MovieClip {
  8. private var api:Object;
  9. private var tw:Number;
  10. private var th:Number;
  11. public var now:Number;
  12. public var up_speeds:Array = [];
  13. public var dn_speeds:Array = [];
  14. public function Speeder():void {
  15. Security.allowDomain("*");
  16. root.loaderInfo.sharedEvents.addEventListener('api',apiHandler);
  17. root.loaderInfo.sharedEvents.addEventListener('api_remove',removeHandler);
  18. bt_close.addEventListener(MouseEvent.CLICK, closeClick);
  19. info.visible = false;
  20. tips.visible = false;
  21. bt_test.visible = false;
  22. bt_test.addEventListener(MouseEvent.CLICK, testClick);
  23. }
  24. override public function set width(v:Number):void {
  25. }
  26. override public function set height(v:Number):void {
  27. }
  28. public function removeHandler(e):void {
  29. }
  30. private function apiHandler(e):void {
  31. var apikey:Object = e.data;
  32. if (! apikey) {
  33. return;
  34. }
  35. api = apikey.api;
  36. readme.autoSize = "left";
  37. readme.width = 270;
  38. if (api.config.speeder_readme) {
  39. readme.htmlText = api.config.speeder_readme;
  40. }
  41. bg.height = readme.y + readme.height + 5;
  42. api.addEventListener(apikey.key, "resize", resizeHandler);
  43. resizeHandler();
  44. start();
  45. }
  46. private function resizeHandler(e:Event = null):void {
  47. tw = api.config.width;
  48. th = api.config.height;
  49. this.x = (tw - bg.width) * 0.5;
  50. this.y = (th - bg.height) * 0.5;
  51. }
  52. public function closeClick(e:MouseEvent):void {
  53. visible = false;
  54. }
  55. public function testClick(e:MouseEvent):void {
  56. start();
  57. }
  58. public function start():void {
  59. tips.visible = false;
  60. bt_test.visible = false;
  61. loading.visible = true;
  62. if (!up_speeds.length) {
  63. info.visible = false;
  64. } else {
  65. info.alpha = 0.2;
  66. }
  67. up_test();
  68. }
  69. public function done():void {
  70. tips.visible = true;
  71. bt_test.visible = true;
  72. loading.visible = false;
  73. if (!visible) {
  74. return;
  75. }
  76. var up_sn:Number = up_speeds[up_speeds.length - 1];
  77. var up_sa:Number = getSpeed(up_speeds);
  78. var dn_sn:Number = dn_speeds[dn_speeds.length - 1];
  79. var dn_sa:Number = getSpeed(dn_speeds);
  80. var max_bar:Number = 270;
  81. var ms:Number = Math.max(up_sn, Math.max(up_sa, Math.max(dn_sn, dn_sa)));
  82. var max_spd:Number = Math.ceil(ms * 0.1) * 10;
  83. info.up_now.width = Math.round(max_bar * up_sn / max_spd);
  84. info.up_avg.width = Math.round(max_bar * up_sa / max_spd);
  85. info.up_txt.htmlText = '?????'+up_sn+'kb/s (???<font color="#0051CC"><b>'+up_sa+'kb/s</b></font>)';
  86. info.dn_now.width = Math.round(max_bar * dn_sn / max_spd);
  87. info.dn_avg.width = Math.round(max_bar * dn_sa / max_spd);
  88. info.dn_txt.htmlText = '?????'+dn_sn+'kb/s (???<font color="#007A00"><b>'+dn_sa+'kb/s</b></font>)';
  89. info.visible = true;
  90. info.alpha = 1;
  91. }
  92. public function getSpeed(list:Array):Number {
  93. var len:int = list.length;
  94. var num:Number = 0;
  95. for (var i:int = 0; i < len; i ++) {
  96. num += list[i];
  97. }
  98. var val:Number = Math.round(num / len);
  99. return val;
  100. }
  101. public function getNow():Number {
  102. var d:Date = new Date();
  103. var t:Number = d.getTime();
  104. return t;
  105. }
  106. public function up_test():void {
  107. var t:Number = getNow();
  108. now = t;
  109. var up_url:String = "http://tool.115.com/live/speed_api/";
  110. var loader:Loader = new Loader();
  111. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, up_done);
  112. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, up_done);
  113. var request:URLRequest = new URLRequest(up_url);
  114. //up=102400?0
  115. var zero102400:String = "";
  116. for (var i:int = 0; i < 102400; i ++) {
  117. zero102400 += "0";
  118. }
  119. var variables:URLVariables = new URLVariables();
  120. variables.up = zero102400;
  121. request.data = variables;
  122. request.method = URLRequestMethod.POST;
  123. loader.load(request);
  124. }
  125. private function up_done(e:Event):void {
  126. //trace("up done: " + e);
  127. var t:Number = getNow();
  128. var speed:Number = Math.round(102400 / (t - now));
  129. up_speeds.push(speed);
  130. dn_test();
  131. }
  132. public function dn_test():void {
  133. var t:Number = getNow();
  134. now = t;
  135. var dn_url:String = "http://tool.115.com/api/tools_speedtest.php?time=" + t;
  136. var loader:Loader = new Loader();
  137. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, dn_done);
  138. loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, dn_done);
  139. var request:URLRequest = new URLRequest(dn_url);
  140. loader.load(request);
  141. }
  142. private function dn_done(e:Event):void {
  143. //trace("dn done: " + e);
  144. var t:Number = getNow();
  145. var speed:Number = Math.round(102400 / (t - now));
  146. dn_speeds.push(speed);
  147. done();
  148. }
  149. }
  150. }