Action script如何复制一个Bitmap对象

本文探讨了在Flash中复制Bitmap对象的有效方法。针对常见的应用场景,对比了三种不同的复制方案,并详细解析了每种方案的优缺点及实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人最近遇到需要复制一个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的方法
这个方法我试过,可以正常使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值