• Flash本地传递大数据,图片数据,localconnection 超出大小,超出限制 bitmapdata 拂晓风起


    1、Localconnection
    Flash之间传递数据,自然想到Localconnection等多种办法。
     
    但在实践中,如果要传一个图片这样的数据,就没这么简单了。
    首先,localconnection一次send只能传递40k的数据,而且是它AMF编码后的,也就是说,自己最多也只能有30+K的余地。
     
    针对这个限制,首先,我们想到拆分N份来发。
            var size:int = 30*1024;
            var count:int = a.length / size + 1;
            var localConnection:LocalConnection = new LocalConnection();
            for(var i:int = 0; i < count; i++)
           {
                   var temp:ByteArray = new ByteArray();
                  temp.writeBytes(a, i*size, Math.min(size, a.length - i*size));
                   localConnection.send("photoShowEditor", "showBitmapData" , temp);
           }
     
    但事实证明,这个是非常有问题的做法。例如测试中,要传递260k的png数据,拆分了9份去传。结果令人沮丧。。。竟然要4s才最终传完。
     
    于是,这得出一个结论,localconnection不适合做这种大数据的传输。必须找个中转。
     
    2、Localconnection + SharedObject
    有人设想利用SharedObject做中转区,用localconnection通知对方去接受。
    但是,根据QQ秀客户端的不完全统计,有10%的人会有意无意的关闭的SharedObject。那很显然,这个办法不完全可靠。
     
    3、base64编码后通过js去传递
    260k的png图片,编码后变成340k左右,flash和js之间传递参数,完全可以容纳这个大小的字符串。
    但这个如果在跨iframe之间传递,也许会稍有点小麻烦。但最起码这个方案是最可靠
     
     
    最后,除去上述3个方案后,其实最可靠的,也许不是本地直接传递,如果能借助于服务器,先上传图片,再在另外一边展示,也许问题就完全没有了。
  • 相关阅读:
    【Mongodb教程 第九课 】MongoDB 删除文档
    【Mongodb教程 第八课 】MongoDB 更新文档
    【Mongodb教程 第七课 】MongoDB 查询文档
    【Mongodb教程 第六课 】MongoDB 插入文档
    【Mongodb教程 第五课 】MongoDB 删除集合
    【Mongodb教程 第四课 】MongoDB 创建集合
    【Mongodb教程 第三课 】MongoDB 删除数据库
    【Mongodb教程 第二课 】 MongoDB 创建数据库 use 命令
    题解 P2821 【变幻数】
    题解 P6249 【神帖】
  • 原文地址:https://www.cnblogs.com/kenkofox/p/2956373.html
Copyright © 2020-2023  润新知