`
阅读更多
第一话:加载Base64 encoded string

通过加载Base64 string创建图片。没错,就像你看到的,加载一个字符串也可以生成图片,当然不是说图片url是字符串(废话!),图片数据就在字符串中。

问题的关键是需要这么一个类Base64,它的converToByteArray方法可以把字符串转化为ByteArray,有了ByteArray数据,我们就可以生成图片了。

代码如下:



//http://www.motobit.com/util/base64-decoder-encoder.asp
//你可以在线把一张小图片转为base64 string,把字符串粘贴到这里赋值给变量str
//过些天做个有输入框的实例,可以把你得到的字符串粘到里面,生成图片
var str:String = "";
var byteArr:ByteArray = Base64.converToByteArray(str);
var loaderoader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
loader.loadBytes(byteArr);
function onImageLoaded(e:Event):void{
        addChild(loader);
        trace(loader.width + " : " + loader.height);
}


第二话:简单渐进式加载图片类ByteLoader

上面只是为了给大家开开眼界,不表。你可能会说“我的目的很简单,我只是要加载一张图片,用渐进的方式边加载边显示,我可不知道哪里有一串字符串让我去加载。”

嗯,来看看这个类吧,ByteLoader继承Loader类,使用方法跟Loader类一样简单。

原理是:

用URLStream类去加载图片数据流,
然后用帧循环stream.readBytes(data, data.length)将数据读入ByteArray中;
同时在帧循环中卸载Loader中旧的数据,加载新的数据super.unload();super.loadBytes(data);
代码如下:
package {
        import flash.events.EventDispatcher;
        import flash.events.ProgressEvent;
        import flash.events.Event;
        import flash.utils.ByteArray;
        import flash.net.URLStream;
        import flash.net.URLRequest;
        import flash.display.Loader;
        public class ByteLoader extends Loader{
                public var url:String;
                public var data:ByteArray;
                private var stream:URLStream;
                public function ByteLoader(url:String = ""){
                        if(url != ""){
                                loadUrl(url);
                        }
                }
                //加载
                public function loadUrl(_url:String):void{
                        url = _url;
                        data = new ByteArray;
                        stream = new URLStream;
                        stream.load(new URLRequest(url));
                        stream.addEventListener(Event.COMPLETE,completeFun);
                        stream.addEventListener(ProgressEvent.PROGRESS,progressFun);
                        addEventListener(Event.ENTER_FRAME,loaddata);
                }
                private function loaddata(e:Event):void{
                        if (stream.bytesAvailable > 0){
                                stream.readBytes(data, data.length);
                        }
                        if (data.length > 0){
                                super.unload();
                                super.loadBytes(data);
                        }
                }
                //加载中
                private function progressFun(erogressEvent):void{
                        if(stream.bytesAvailable == 0) return;
                        dispatchEvent(e);
                        trace(e.bytesLoaded);
                }
                //加载完成
                private function completeFun(e:Event):void{
                        stream.removeEventListener(Event.COMPLETE,completeFun);
                        stream.removeEventListener(ProgressEvent.PROGRESS,progressFun);
                        dispatchEvent(e);
                        this.closeStream();
                }
                //清除数据
                public function closeStream():void{
                        if (stream){
                                if (stream.connected) stream.close();
                        }
                        if (hasEventListener(Event.ENTER_FRAME)){
                                removeEventListener(Event.ENTER_FRAME, loaddata);
                        }
                }
        }
}
分享到:
评论
1 楼 273611924 2012-01-04  
请教一下
我如何把加载的图片显示到到界面上?

相关推荐

    煤岩重复加载力学特性试验研究

    利用MTS815.03电液伺服岩石试验系统,对运河煤矿煤岩试件在重复加载作用下的特性进行研究。研究结果表明,在重复加载作用下,煤岩强度极限较常规单轴压缩强度极限降低约23.65%;二次加载时弹性模量较初次加载时弹性模量...

    java面试题静态加载顺序构造方法

    4.知道了static的作用,那么X类被加载,那么就会先执行X类的静态属性和静态语句块(static),执行先后顺序看谁在前面就先执行谁。只在此时执行,以后都不会。 5.所以一个输出结果为tttt,没问题了吧。 6.X类的...

    VB6.0动态加载ActiveX控件漫谈

    二、加载方法 ---- VB6.0中对Controls 集合进行了扩展,以前版本中Controls 集合在窗体上列 举出已加载的控件,这在迭代过程中是很有用的。Controls 集合标识一个叫做 Controls的内在窗体级变量。如果忽略可选的 ...

    解析javascript图片懒加载与预加载的分析总结

    两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。 懒加载的意义及实现方式有: 意义: 懒加载的主要目的是...

    不同围压加载方式下土石混合体变形破坏机制颗粒流模拟研究

    土石混合体是一种非连续、非均质的混合多相介质材料,在轴向荷载作用下,由于内部变形的不均匀性,其变形破坏受围压加载方式影响显著。考虑刚性和柔性两种围压加载方式,采用颗粒流程序(PFC2D)开展了不同含石量和...

    Gif-Load-ReTry-Refresh-支持gif图片的Load反馈框架,只需一张gif图,一行代码解决初次加载,重试加载,刷新加载,与生命周期绑定,LeakCanary检测无内存泄漏.zip

    }配置属性方法参数作用setGifR.drawable.*加载页面的Gif图setBackgroundColorR.color.*加载页面整体背景颜色setBtnNormalColorR.color.*加载页面按钮未按下时的颜色setBtnPressedColorR.color.*加载页面按钮按下时的...

    JS图片预加载插件详解

    两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。 服务器端区别:懒加载的主要目的是作为服务器前端的优化,...

    点荷载作用下基于声发射监测的岩石加载试验数值模拟

    利用RFPA2D对5种尺寸的岩石试件进行点荷载加载数值模拟,从声发射及受载端应力方面分析了点荷载作用下影响岩样试验的有关问题,结果表明:岩样试件在点荷载的作用下,其端部压应力效应对高径比为1∶1~1∶2之间的岩体试验...

    不知道vue路由懒加载,进来看看吧

    二、为什么有 前端发展到了单页面富应用(SPA)阶段(整个网站只有一个html+css+js) 当打包构建应用时,js包会变得特别大,影响页面加载 可以把不同路由对应的组件分割成不同代码块,当路由被访问时才加载对应组件 三、...

    js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果

     1)、对于首屏内容中的图片:首先给对应的区域一张默认图片占的位置(默认图需要非常的小,一般可以维持在5kb以内),当首屏内容都加载完成后(或者也可以给一个延迟的时间),我在开始加载真实的图片  2)、对于...

    ANSYS面荷载加载技术分析

    利用面荷载的大小和作用方向2个表征量表示作用于模型外表面的力,利用ANSYS的SFGRAD命令定义面荷载大小随位置线性变化的荷载情况,基于ANSYS的参数数组和嵌入函数定义面荷载大小随位置非线性变化的荷载情况,以覆盖于所...

    加载计时器:一个简单的Fabricmc Mod,用于了解Minecraft加载所需的时间

    老实说,我花了大约2天的时间来创建此mod,因为缺乏了解Java语言的知识,从头开始,但最终我使它起作用了! 为我万岁! 设置 有关设置说明,请参阅与您所使用的IDE相关的。 执照 该项目是根据MIT许可授权的 我可能...

    部署到iis后无法加载运行CSS文件的解决方法

    您可能感兴趣的文章:值得分享的IIS部署网站详细步骤在IIS上部署ASP.NET Core项目的图文方法有了SSL证书,如何在IIS环境下部署httpswin2008 IIS7无后缀URL部署问题 MVC4 MVC URL映射windows2003 IIS6 部署MVC3和MVC4...

    SQL Server 2008 管理工具

    当你的Management Studio 打开提示无法加载包“Micrsoft Management Studio Package”时,那么这款软件将起到一定的帮助作用!

    动静组合加载下煤体损伤及力学特性研究

    (2)在动力扰动作用下,煤体内部损伤不断加剧,煤体弹性能储能极限以[]13.71ln 36.33eU (28)-D (10)的趋势不断降低,冲击破坏损耗能不断减少,原本积聚在煤体内的弹性能会瞬间释放,导致煤体冲击破坏。(3)提出了增加煤柱的...

    Java类加载顺序笔试题-Nicobar:尼科巴

    2)建立复杂的模块依赖图 在脚本模块之间建立任意依赖关系图,能够过滤每个模块的导入和导出包。 模块通过类加载器相互隔离。 3) 提供有用的管理和持久化特性 从可插拔存储库实现中保留和获取脚本模块,包括基于文件...

    Windows下使用apache模块实现合并多个js、css提高网页加载速度

    使用mod_concatx, 可以合并多个文件在一个http响应报文中,可以有效提高js/css的加载速度。 示例效果如下: mod_concatx模块是在mod_concat基础上修改的,感谢他们的工作。 原有的mod_concat模块有很大的参考价值,...

    阿里巴巴面试题总结

    阿里巴巴面试题总结 ...2. java有多少个类加载器?分别的作用是什么?一个Class文件是怎么被加载 到JVM里的,描述一下加载流程。 答:java有三个类加载器,分别为:根类加载器,扩展类加载器,系统类加载 器。

    Excel加载宏程序(表格比对)

    Excel表格中基于数据比较的加载宏程序,实现自动在工具栏添加按钮,可以选择工作簿中任一工作表中的列进行比较,将不同部分自动写入新的工作表中。有面向对象的窗体操作界面。 宏的作用就是对excel进行操作,尤其是...

    嵌入式系统100个指令的作用

    2. SUB R1, R1, R2: R1 = R1 – R2 3. MOV R1, R2: R1 = R2 4. AND R1, R2, R3: R1 = R2 & R3 (按位与) 5. ORR R1, R2, R3: R1 = R2 | R3 (按位或) 6. EOR R1, R2, R3: R1 = R2 ^ R3 (按位异或) 7. CMP R1, R2: 比较...

Global site tag (gtag.js) - Google Analytics