使用位图图像的主要 ActionScript 3.0 类有Bitmap 类和 BitmapData 类;前者用于在屏幕上显示位图图像,后者用于访问和操作位图的原始图像数据。
了解 Bitmap 类(视为一个容器)
作为 DisplayObject 类的子类,Bitmap 类是用于显示位图图像的主要 ActionScript 3.0 类。这些图像可能已经通过 flash.display.Loader 类加载到 Flash Player 或 Adobe AIR 中,或已经使用 Bitmap() 构造函数动态创建。从外部源加载图像时,Bitmap 对象只能使用 GIF、JPEG 或 PNG 格式的图像。
var myLoader:Loader=new Loader();
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHd);
function completeHd(e:Event){
var myPic:Bitmap=Bitmap(e.target.content); //先转换为Bitmap对象
var myBitmap:BitmapData =myPic.bitmapData; //使用Bitmap对象的bitmapData属性得到引用
}
myLoader.load(new URLRequest("image.GIF"));
实例化后,可将 Bitmap 实例视为需要呈现在舞台上的 BitmapData 对象的包装。由于 Bitmap 实例是一个显示对象,因此可以使用显示对象的所有特性和功能来操作 Bitmap 实例。有关使用显示对象的详细信息,请参阅 显示编程。
像素贴紧和平滑
除了所有显示对象常见的功能外,Bitmap 类还提供了特定于位图图像的一些附加功能。
与 Flash 创作工具中的贴紧像素功能类似,Bitmap 类的 pixelSnapping 属性可确定 Bitmap 对象是否贴紧最近的像素。此属性接受 PixelSnapping 类中定义的三个常量之一:ALWAYS、AUTO 和 NEVER。
应用像素贴紧的语法为:
myBitmap.pixelSnapping = PixelSnapping.ALWAYS;
通常,缩放位图图像时,图像会变得模糊或扭曲。若要帮助减少这种扭曲,请使用 BitmapData 类的 smoothing 属性。如果将该布尔值属性设置为 true,当缩放图像时,可使图像中的像素平滑或消除锯齿。它可使图像更加清晰、更加自然。
了解 BitmapData 类
BitmapData 类位于 flash.display 包中,它可以看作是加载的或动态创建的位图图像中包含的像素的照片快照。此快照用对象中的像素数据的数组表示。BitmapData 类还包含一系列内置方法,可用于创建和处理像素数据。
若要实例化 BitmapData 对象,请使用以下代码:
var myBitmap:BitmapData = new BitmapData(width:Number, height:Number, transparent:Boolean, fillColor:uinit);
width
和
height
参数指定位图的大小;二者的最大值都是 2880 像素。
transparent
参数指定位图数据是 (
true
) 否 (
false
) 包括 Alpha 通道。
fillColor
参数是一个 32 位颜色值,它指定背景颜色和透明度值(如果设置为
true
)。以下示例创建一个具有 50% 透明的橙色背景的 BitmapData 对象:
var myBitmap:BitmapData = new BitmapData(150, 150, true, 0x80FF3300);
若要在屏幕上呈现新创建的 BitmapData 对象,请将此对象分配给或包装到 Bitmap 实例中。为此,可以将 BitmapData 对象作为 Bitmap 对象的构造函数参数传递,也可以将此对象分配给现有 Bitmap 实例的 bitmapData 属性。您还必须通过调用将包含该 Bitmap 实例的显示对象容器的 addChild() 或 addChildAt() 方法将该 Bitmap 实例添加到显示列表中。有关使用显示列表的详细信息,请参阅在显示列表中添加显示对象。
以下示例创建一个具有红色填充的 BitmapData 对象,并在 Bitmap 实例中显示此对象:
var myBitmapDataObject:BitmapData = new BitmapData(150, 150, false, 0xFF0000);
var myImage:Bitmap = new Bitmap(myBitmapDataObject);
addChild(myImage);