ps外包网站,鲜花网站建设店,建设一个电子商务网站的基本步骤,wordpress设置不同分类的模板项目的需要将flex里面录音的数据通过activeX保存到客户机器里面。稍微了解了下#xff0c; as代码没办法直接和activeX控件交互#xff0c;于是只能通过html页面的js交互再调用activeX控件 于是简单的在定时器里面将#xff0c;得到的录音sample数据#xff0c;传输到js里面…项目的需要将flex里面录音的数据通过activeX保存到客户机器里面。稍微了解了下 as代码没办法直接和activeX控件交互于是只能通过html页面的js交互再调用activeX控件 于是简单的在定时器里面将得到的录音sample数据传输到js里面。 代码如下 // getTimer() - start_time作用是为避免阻塞只能运行大概500ms 就返回。 while(data_short.bytesAvailable (getTimer() - start_time time_loop)) { // 传递给js保存数据 var sample:Number data_short.readFloat(); //Trans2Js 代码没有做任何事情就简单的return null; ExternalInterface.call(Trans2Js,0.2*32767); }// end while 实际运行项目发现处理数据的速度超级慢。chorme 浏览器比IE快一倍的速度 反复折腾觉得是ExternalInterface.call 的效率问题因为不知道adobe是怎么实现的。 只能测试一下下面简单的代码。 代码如下 var loop_count:int 8012; var start_time:int; start_time getTimer(); while(loop_count-- 0) { //Trans2Js 代码没有做任何事情就简单的return null; ExternalInterface.call(Trans2Js,0.2*32767); } var end_time:int getTimer(); lb_time.text String(end_time - start_time) :毫秒; 得到的结果是5687 毫秒IE 甚至去到7859 毫秒。 也就是说 ExternalInterface.call(Trans2Js,0.2*32767); 的调用大概用了1毫秒对于现在的cpu来说我的2.6 GHZ单核很lj那种 效率根本无法想象。听说adobe 会将这个调用转换成xml格式的字符串传递。 难道效率在转换的过程么 如果是的话那也太不可思议了吧所以我觉得应该 不是这原因。 由于水平有限只能用测试的方法大概猜测一下。 代码如下 把sample添加到数组然后一次传递给 ExternalInterface据说可以传递数组 var loop_count:int 8012; var start_time:int; var arg1:Array new Array(); start_time getTimer(); while(loop_count-- 0) { arg1.push(0.2*32767); } ExternalInterface.call(Trans2Js,arg1); var end_time:int getTimer(); lb_time.text String(end_time - start_time) :毫秒; 得到的结果是58 毫秒 综合以上可以看出两次传递的数据量是一样的但是效率却相差差不多100倍。因此猜测效率的 消耗应该在于调用过程中的IO 或者 和容器沟通方面而不在于转换成xml字符串的问题。 因此我们要传输大数据量的时候最好先用array 或者 字符串之类组成起来然后一次调用 ExternalInterface.call 达到性能优化的目的。