您的位置:首页 > 其它

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的方法

这个方法我试过,可以正常使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: