Action script如何复制一个Bitmap对象
2008-03-11 19:45
288 查看
本人最近遇到需要复制一个Bitmap对象的问题,应用场景如下:
在我的一个Flash中经常需要加载同样的图片,而这张图片也是比较大的,所以就想第一次使用后就把这张图片缓存起来,以后用时直接从缓存读取就可以了,因此就遇到Bitmap对象的复制问题,在网上搜了一下,网友们有两种解决方案,如下
方案1:
Title
public class MyImage{
public var bitmap: Bitmap;
public var url: String;
public var x: number;
public var y: number;
public function clone(): MyImage()
{
var myImage: MyImage = new MyImage();
myImage.bitmap = this.bitmap.clone;
myImage.url = this.url;
myImage.x = this.x;
myImage.y = this.y;
return myImage;
}
}
这种方案网上有人说可以,但是我自己试了一下,好像不行,“this.bitmap.clone”这句话不对,Bitmap就没有clone这个属性
方案2:
...
import flash.net.registerClassAlias;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
...
public function clone(source:Object) :* {
var typeName:String = getQualifiedClassName(source);//获取全名
var packageName:String = typeName.split("::")[1];//切出包名
var type:Class = Class(getDefinitionByName(typeName));//获取Class
registerClassAlias(packageName, type);//注册Class
//复制对象
var copier:ByteArray = new ByteArray();
copier.writeObject(source);
copier.position = 0;
return copier.readObject();
}
这种方案虽然不报错,对象也复制成功了,但是好像图片就是无法正常显示
方案3:这是我自己的方案,其实也是很简单的事情
new Bitmap(sourceBitmap.bitMapData.clone())
Bitmap的bitmapData有clone的方法
这个方法我试过,可以正常使用
在我的一个Flash中经常需要加载同样的图片,而这张图片也是比较大的,所以就想第一次使用后就把这张图片缓存起来,以后用时直接从缓存读取就可以了,因此就遇到Bitmap对象的复制问题,在网上搜了一下,网友们有两种解决方案,如下
方案1:
Title
public class MyImage{
public var bitmap: Bitmap;
public var url: String;
public var x: number;
public var y: number;
public function clone(): MyImage()
{
var myImage: MyImage = new MyImage();
myImage.bitmap = this.bitmap.clone;
myImage.url = this.url;
myImage.x = this.x;
myImage.y = this.y;
return myImage;
}
}
这种方案网上有人说可以,但是我自己试了一下,好像不行,“this.bitmap.clone”这句话不对,Bitmap就没有clone这个属性
方案2:
...
import flash.net.registerClassAlias;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
...
public function clone(source:Object) :* {
var typeName:String = getQualifiedClassName(source);//获取全名
var packageName:String = typeName.split("::")[1];//切出包名
var type:Class = Class(getDefinitionByName(typeName));//获取Class
registerClassAlias(packageName, type);//注册Class
//复制对象
var copier:ByteArray = new ByteArray();
copier.writeObject(source);
copier.position = 0;
return copier.readObject();
}
这种方案虽然不报错,对象也复制成功了,但是好像图片就是无法正常显示
方案3:这是我自己的方案,其实也是很简单的事情
new Bitmap(sourceBitmap.bitMapData.clone())
Bitmap的bitmapData有clone的方法
这个方法我试过,可以正常使用
相关文章推荐
- js中如何复制一个对象并获取其所有属性和属性对应的值
- js如何复制一个对象?
- Flex中如何利用Bitmap和BitmapData类复制图片到一个TileList控件的例子
- js中如何复制一个对象,如何获取所有属性和属性对应的值
- JavaScript如何复制一个对象或数组,而不是引用一个对象或数组。
- 如何复制一个java对象(浅克隆与深度克隆)
- 如何深度复制一个javascript对象
- js中如何复制一个对象并获取其所有属性和属性对应的值
- JavaScript--如何拷贝一个json对象:浅复制和深复制
- [置顶] js中如何复制一个对象,如何获取所有属性和属性对应的值
- js中如何复制一个对象,如何获取所有属性和属性对应的值
- android如何获取res文件夹下drawable文件夹下的图片资源文件转成一个BitMap对象
- js如何判断一个对象{}是否为空对象,没有任何属性
- 如何将一个json中的json字符串转换成一个USER对象。
- 如何判断一个JS对象是DOM对象
- 【more effective c++读书笔记】【第5章】技术(7)——让函数根据一个以上的对象类型来决定如何虚化(2)
- 使用反射复制一个JavaBean的对象
- 如何初始化(新建)一个方法 ,如何方法逆向调用对象
- 如何删除掉一个用户下的所有对象
- 如何得知一个__ComObject对象的实际类型