FLEX 图片拷贝
在用FLEX做GIS相关的开发的时候,遇到一个问题。因为是监控类的系统,所以需要要求地图上的ICON的实时更新,从而会出现重复加载的情况。就是重复请求相同的图片用做背景,尤其是在加载的ICON较多的时候,会有大量的http请求占用大量的资源。
这时候想到两种解决办法:
- 把图片资源嵌入FLEX文件
- 把图片做缓存
(1)把图片资源嵌入FLEX文件:
[Bindable]
[Embed(source="image/example.jpg")]
private var imgClass:Class;
但是当图片特别多的时候,例如有几百张的话,就不堪重负了。那我们看第二种。
(2)大家都知道ActionScript的对象都是引用传递。假如需要做缓存的话必须做一个副本用于拷贝,否则就会出现一张图片被多个元素使用的情况,造成的结果就是”有的孩子没饭吃“。这样就需要用到图片的拷贝。废话不多说先写个拷贝的功能类:
package com.charles.util
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
import mx.core.UIComponent; public class BitmapCopyHepler
{
public function BitmapCopyHepler ()
{
super();
}
/**
* 将可视的UIComponent组件转换为ByteArray数组
*@param bitMapData:BitmapData
*@param bitmap:Bitmap
*/
public static function BitmapDataToByteArray(bitMapData:BitmapData,bitmap:Bitmap):ByteArray{
//读取指定像素区域生成一个ByteArray
var pixels:ByteArray = bitMapData.getPixels( new Rectangle(0,0,bitmap.width,bitmap.height) );
//将数据源的高和宽一起存储到数组中
pixels.writeShort(bitmap.width);
pixels.writeShort(bitmap.height);
return pixels;
} /**
* 将Byte数组转为Bitmap对象
*@param byArr:ByteArray
*@param bitmapData:BitmapData
*/
public static function ByteArrayToBitmap(byArr:ByteArray,bitmapData:BitmapData):Bitmap{
if(byArr==null){
return null;
}
//读取出存入时图片的高和宽
var bmd:ByteArray= byArr;
bmd.position=bmd.length-2;
var imageWidth:int = bmd.readShort();
bmd.position=bmd.length-4;
var imageHeight:int= bmd.readShort();
//拷贝BitmapData数据
var copyBmp:BitmapData = bitmapData.clone();
//给图片中的每一个像素赋值,按照原有的图片结构重新绘制图片
bmd.position = 0;
copyBmp.setPixels(new Rectangle(0,0,imageWidth,imageHeight),bmd);
var bmp:Bitmap = new Bitmap(copyBmp );
return bmp;
}
}
}
好的下面就可以用这个功能类来拷贝图片了,具体的操作本人就不一一赘述啦,希望各位大神指正:
...
var imgPathString = "../images/example.jpg";
var loader:Loader = new Loader();
if(imgPathString)
loader.load(new URLRequest(imgPathString));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
... /**
* 监听到Loader加载完毕以后执行的函数
*/
private function loadComplete(e:Event):void {
var loader:Loader=Loader(e.target.loader);//得到Loader对象
var icon:DisplayObject = Bitmap(loader.content);//Loader里面的内容
//获取Bitmap对象的BitmapData数据
var bitmapData:BitmapData = Bitmap(loader.content).bitmapData;
//转为byteArray.
var bytes: ByteArray = BitmapBytes.BitmapDataToByteArray( Bitmap(loader.content).bitmapData,Bitmap(loader.content));
... }
转载请注明出处:http://www.cnblogs.com/xinwang/p/4283166.html
FLEX 图片拷贝的更多相关文章
- flex图片布局
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>f ...
- flex 图片旋转(解决公转和自转问题)
在Flex中图片的旋转是既有公转和自转的.这样在图片旋转的时候就有一定小麻烦: 为了更好地说明问题,先引入两个概念:“自转”和“公转”.想象一下,地球在绕着太阳公转的同时,它自己也在自转.Flash应 ...
- FileInputStream与FileOutputStream练习题 -------------------图片拷贝
package com.outputstream; import java.io.File; import java.io.FileInputStream; import java.io.FileNo ...
- NIO的原理和文件读入读出及图片拷贝的使用
1.NIO的简介 java.nio 全称 java non-blocking IO 是jdk1.4之后出现的 New IO 为所有的原始类型(boolean除外)提供了缓存 ...
- flex图片垂直居中
html <view class="person_info_more"> <image class="more" src="/ima ...
- Android—基于GifView显示gif动态图片
android中显示gif动态图片用到了开源框架GifView 1.拷GifView.jar到自己的项目中. 2.将自己的gif图片拷贝到drawable文件夹 3.在xml文件中设置基本属性: &l ...
- java IO流复制图片
一.使用字节流复制图片 //字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // Str ...
- Android图片缩放方法
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- JS Flex交互:html嵌套Flex(swf)
一.html页面嵌套Flex需要用到 swfobject.js swfobject的使用是非常简单的,只需要包含 swfobject.js这个js文件,然后在DOM中插入一些简单的JS代码,就能嵌入F ...
随机推荐
- 使用Android SDK Manager自动下载速度慢解决方法
可以在SDK Manager 的更新界面,勾选下载项并去android-sdk-windows\temp文件家中查找文件名称例如:android-2.3.1_r02-linux.zip在前面加上链接h ...
- jquery live hover事件的替代写法
HTML中的hover行为通常在样式中定义,利用jquery实现此效果有两种情况. 第一种是常见的针对页面中静态的元素,以改变元素样式中的border-color为例,写法如下: $(function ...
- 标量类型(scalar)
(ISO C11 §6.2.5) Arithmetic types and pointer types are collectively called scalar types. Array and ...
- cocos2dx lua调用C++类.
最近需求所迫, 终于着手传说中的 lua 了. 折腾了4天, 总算大概搞明白了用法. 细节咱们就别谈了, 直接说项目里怎么跑起来. 准备工作 我们需要一系列繁琐的前奏. tolua++: 这是必备工具 ...
- ONVIF Event消息解析(How to work with gSoap)
Prepare Requirements ONVIF Event gSoap reference ONVIF Specification 问题描述 Event是ONVIF核心规范中一块, 文档解释了如 ...
- 03_RHEL7.1去掉注册提示
# rpm –qa|grep subscription-manager 出现类似下面的代码: subscription-manager-firstboot-1.13.22-1.el7.x86_64 s ...
- span宽度高度设置
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Python第三方库(模块)"scikit learn"以及其他库的安装
scikit-learn是一个用于机器学习的 Python 模块. 其主页:http://scikit-learn.org/stable/. GitHub地址: https://github.com/ ...
- Ajax表单提交插件jquery form
jQuery Form插件是一个优秀的Ajax表单插件,我们可以非常容易的使用它处理表单控件的值,清空和复位表单控件,附件上传,以及完成Ajax表单提交. jQuery Form有两个核心方法ajax ...
- C语言的算法--------二分法查找
int find(int n,int a[],int l){int low=0;int high=l-1;int middle=0;while(low<high){middle=(low+hig ...