包 | flash.display |
类 | public class Bitmap |
继承 | Bitmap DisplayObject EventDispatcher Object |
子类 | FlexBitmap |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bitmap()
构造函数创建的图像。
利用 Bitmap()
构造函数,可以创建包含对 BitmapData 对象的引用的 Bitmap 对象。创建了 Bitmap 对象后,使用父 DisplayObjectContainer 实例的 addChild()
或 addChildAt()
方法将位图放在显示列表中。
一个 Bitmap 对象可在若干 Bitmap 对象之中共享其 BitmapData 引用,与转换属性或旋转属性无关。由于能够创建引用相同 BitmapData 对象的多个 Bitmap 对象,因此,多个显示对象可以使用相同的复杂 BitmapData 对象,而不会因为每个显示对象实例使用一个 BitmapData 对象而产生内存开销。
Bitmap 对象可通过以下两种方式之一将 BitmapData 对象绘制到屏幕上:使用矢量渲染器作为填充位图形状,或使用更快的像素复制例程。像素复制例程的速度比矢量渲染器要快很多,但 Bitmap 对象必须满足某些条件才能使用该例程:
- 不能将拉伸、旋转或倾斜效果应用于 Bitmap 对象。
- 不能将颜色转换应用于 Bitmap 对象。
- 不能将混合模式应用于 Bitmap 对象。
- 不能通过蒙版或
setMask()
方法进行剪裁。 - 图像本身不能是遮罩。
- 目标坐标必须位于一个整像素边界上。
如果从中加载 Bitmap 对象的域不同于用于加载图像的 Loader 对象的域,并且没有用于允许访问 Loader 对象的域的 URL 策略文件,则该域中的脚本无法访问 Bitmap 对象或其属性及方法。有关详细信息,请参阅 Flash Player 开发人员中心主题:安全性。
注意:Bitmap 类不是 InteractiveObject 类的子类,因此它无法调度鼠标事件。但是,可以使用包含 Bitmap 对象的显示对象容器的 addEventListener()
方法。
相关 API 元素
属性 | 由以下参数定义 | ||
---|---|---|---|
accessibilityProperties : AccessibilityProperties
此显示对象的当前辅助功能选项。 | DisplayObject | ||
alpha : Number
表示指定对象的 Alpha 透明度值。 | DisplayObject | ||
bitmapData : BitmapData
被引用的 BitmapData 对象。 | Bitmap | ||
blendMode : String
BlendMode 类中的一个值,用于指定要使用的混合模式。 | DisplayObject | ||
blendShader : Shader [只写]
设置用于混合前景和背景的着色器。 | DisplayObject | ||
cacheAsBitmap : Boolean
如果设置为 true,则 Flash 运行时将缓存显示对象的内部位图表示形式。 | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
如果为非 null,则 Matrix 对象会定义显示对象在 cacheAsBitmap 设置为 true 时的呈现方式。 | DisplayObject | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
filters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。 | DisplayObject | ||
height : Number
表示显示对象的高度,以像素为单位。 | DisplayObject | ||
loaderInfo : LoaderInfo [只读]
返回一个 LoaderInfo 对象,其中包含加载此显示对象所属的文件的相关信息。 | DisplayObject | ||
mask : DisplayObject
调用显示对象被指定的 mask 对象遮罩。 | DisplayObject | ||
metaData : Object
如果元数据是通过 PlaceObject4 标记与此 DisplayObject 的实例一起存储在 SWF 文件中的,则获取 DisplayObject 实例的元数据对象。 | DisplayObject | ||
mouseX : Number [只读]
表示此鼠标或用户输入设备位置的 x 坐标,以像素为单位。 | DisplayObject | ||
mouseY : Number [只读]
表示此鼠标或用户输入设备位置的 y 坐标,以像素为单位。 | DisplayObject | ||
name : String
表示 DisplayObject 的实例名称。 | DisplayObject | ||
opaqueBackground : Object
指定显示对象是否由于具有某种背景颜色而不透明。 | DisplayObject | ||
parent : DisplayObjectContainer [只读]
表示包含此显示对象的 DisplayObjectContainer 对象。 | DisplayObject | ||
pixelSnapping : String
控制 Bitmap 对象是否贴紧至最近的像素。 | Bitmap | ||
root : DisplayObject [只读]
对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。 | DisplayObject | ||
rotation : Number
表示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。 | DisplayObject | ||
rotationX : Number
表示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 x 轴旋转(以度为单位)。 | DisplayObject | ||
rotationY : Number
表示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 y 轴旋转(以度为单位)。 | DisplayObject | ||
rotationZ : Number
表示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 z 轴旋转(以度为单位)。 | DisplayObject | ||
scale9Grid : Rectangle
当前有效的缩放网格。 | DisplayObject | ||
scaleX : Number
表示从注册点开始应用的对象的水平缩放比例(百分比)。 | DisplayObject | ||
scaleY : Number
表示从对象注册点开始应用的对象的垂直缩放比例(百分比)。 | DisplayObject | ||
scaleZ : Number
表示从对象的注册点开始应用的对象的深度缩放比例(百分比)。 | DisplayObject | ||
scrollRect : Rectangle
显示对象的滚动矩形范围。 | DisplayObject | ||
smoothing : Boolean
控制在缩放时是否对位图进行平滑处理。 | Bitmap | ||
stage : Stage [只读]
显示对象的舞台。 | DisplayObject | ||
transform : flash.geom:Transform
一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。 | DisplayObject | ||
visible : Boolean
显示对象是否可见。 | DisplayObject | ||
width : Number
表示显示对象的宽度,以像素为单位。 | DisplayObject | ||
x : Number
表示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。 | DisplayObject | ||
y : Number
表示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。 | DisplayObject | ||
z : Number
表示 DisplayObject 实例相对于 3D 父容器沿 z 轴的 z 坐标位置。 | DisplayObject |
方法 | 由以下参数定义 | ||
---|---|---|---|
初始化 Bitmap 对象以引用指定的 BitmapData 对象。 | Bitmap | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
将事件调度到事件流中。 | EventDispatcher | ||
返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。 | DisplayObject | ||
返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。 | DisplayObject | ||
将 point 对象从舞台(全局)坐标转换为显示对象的(本地)坐标。 | DisplayObject | ||
将二维点从舞台(全局)坐标转换为三维显示对象的(本地)坐标。 | DisplayObject | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
计算显示对象的边框,以确定它是否与 obj 显示对象的边框重叠或相交。 | DisplayObject | ||
计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。 | DisplayObject | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
将三维显示对象的(本地)坐标的三维点转换为舞台(全局)坐标中的二维点。 | DisplayObject | ||
将 point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。 | DisplayObject | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
bitmapData | 属性 |
bitmapData:BitmapData
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
被引用的 BitmapData 对象。
实现
public function get bitmapData():BitmapData
public function set bitmapData(value:BitmapData):void
pixelSnapping | 属性 |
pixelSnapping:String
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
控制 Bitmap 对象是否贴紧至最近的像素。PixelSnapping 类包括以下可能值:
PixelSnapping.NEVER
-- 不进行像素贴紧。PixelSnapping.ALWAYS
-- 图像始终与最近的像素贴紧,与变形无关。PixelSnapping.AUTO
-- 如果绘制图像时未应用旋转或倾斜效果,并且图像是以 99.9% 到 100.1% 的缩放系数绘制的,则图像将与最近的像素贴紧。如果这些条件得到满足,则以 100% 的缩放比例绘制位图图像,与最近的像素贴紧。在内部,此值允许用矢量渲染器以尽可能快的速度绘制图像。
实现
public function get pixelSnapping():String
public function set pixelSnapping(value:String):void
smoothing | 属性 |
Bitmap | () | 构造函数 |
public function Bitmap(bitmapData:BitmapData = null, pixelSnapping:String = "auto", smoothing:Boolean = false)
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
初始化 Bitmap 对象以引用指定的 BitmapData 对象。
参数bitmapData:BitmapData (default = null ) — 被引用的 BitmapData 对象。
| |||
pixelSnapping:String (default = "auto ") — Bitmap 对象是否贴紧至最近的像素。
| |||
smoothing:Boolean (default = false ) — 在缩放时是否对位图进行平滑处理。例如,下例显示使用系数 3 缩放的同一位图,smoothing 设置为 false (左侧)和 true (右侧):
|
示例 ( 如何使用本示例 )
const IMAGE_URL:String = "http://www.helpexamples.com/flash/images/logo.png"; var ldr:Loader = new Loader(); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete); ldr.load(new URLRequest(IMAGE_URL)); var bitmap1:Bitmap; var bitmap2:Bitmap; var bitmap3:Bitmap; var bitmap4:Bitmap; function ldr_complete(evt:Event):void { var bmp:Bitmap = ldr.content as Bitmap; bitmap1 = new Bitmap(bmp.bitmapData); bitmap1.x = 100; bitmap1.y = 100; bitmap1.rotation = 0; addChild(bitmap1); bitmap2 = new Bitmap(bmp.bitmapData); bitmap2.x = 200; bitmap2.y = 100; bitmap2.rotation = 90; addChild(bitmap2); bitmap3 = new Bitmap(bmp.bitmapData); bitmap3.x = 300; bitmap3.y = 100; bitmap3.rotation = 180; addChild(bitmap3); bitmap4 = new Bitmap(bmp.bitmapData); bitmap4.x = 400; bitmap4.y = 100; bitmap4.rotation = 270; addChild(bitmap4); }
threshold()
方法。此任务是使用以下步骤完成的:
- 创建一个
url
属性,它是图像文件的位置和名称 - 类构造函数调用
configureAssets()
方法,而后者又调用completeHandler()
方法。 configureAssets()
创建 Loader 对象,该对象随后实例化一个事件侦听器,而该事件侦听器在completeHandler()
完成图像操作时调度。- 下一步,
buildChild()
方法创建一个 URLRequest 对象的新实例request
,该实例带有传递的url
,这样,就可以知道文件的名称和位置。 request
对象被传递给loader.load()
方法,该方法通过显示对象将图像加载到内存中。- 图像随后将被放在显示列表中,后者将图像立即显示在屏幕的坐标 x = 0, y = 0 处。
- 然后,
completeHandler()
方法将执行下列任务:- 创建另一个 Loader 对象,以及使用 Loader 对象初始化的 Bitmap 对象。
- 创建第二个 Bitmap 对象
duplicate
,该对象再调用duplicateImage()
方法,该方法创建原始图像的副本。 - 创建一个 BitmapData 对象,该对象将被分配给
duplicate
对象的 BitmapData 对象。 - 创建一个与原始图像具有相同的坐标、宽度和高度的新的 Rectangle 对象。
- 创建一个新的 Point 对象,其默认为 x = 0, y = 0。
- 创建以下变量:
operation
:在阈值大于等于原始值时应用新颜色。threshold
:依据其对每个像素进行比较的值设置为浅灰色(Alpha 值为 0xCC)。color
:通过阈值测试的像素将被设置的颜色,在本例中为纯黄色。mask
:设置为与颜色正好相反的颜色(透明的蓝色)。copySource
:设置为 false,指示在阈值未通过测试的情况下不复制像素值。该值没有意义,因为图像是重复的,并且只更改通过了阈值测试的像素。
- 使用前面的变量调用
threshold()
方法。得到的阈值计算式如下所示:if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00
。
注意:
- 您需要编译 SWF 文件,将“本地播放安全性”设置为“只访问本地文件”。
- 此示例要求将名为 Image.gif 的文件与您的 SWF 文件放在同一目录中。
- 建议使用宽度最大为 80 像素的图像。
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; public class BitmapExample extends Sprite { private var url:String = "Image.gif"; private var size:uint = 80; public function BitmapExample() { configureAssets(); } private function configureAssets():void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); var request:URLRequest = new URLRequest(url); loader.x = size * numChildren; loader.load(request); addChild(loader); } private function duplicateImage(original:Bitmap):Bitmap { var image:Bitmap = new Bitmap(original.bitmapData.clone()); image.x = size * numChildren; addChild(image); return image; } private function completeHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var image:Bitmap = Bitmap(loader.content); var duplicate:Bitmap = duplicateImage(image); var bitmapData:BitmapData = duplicate.bitmapData; var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height); var destPoint:Point = new Point(); var operation:String = ">="; var threshold:uint = 0xCCCCCCCC; var color:uint = 0xFFFFFF00; var mask:uint = 0x000000FF; var copySource:Boolean = true; bitmapData.threshold(bitmapData, sourceRect, destPoint, operation, threshold, color, mask, copySource); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
Tue Jun 12 2018, 11:04 AM Z