適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: AIR 30.0 和更早版本, Flash Player 30.0 和更早版本, Flash Lite 4
Flex 4.6 和更早版本, Flash Pro CS6 和更早版本
隱藏篩選
flash.display 

BitmapData  - AS3

套件x

最上層
adobe.utils
air.desktop
air.net
air.update
air.update.events
coldfusion.air
coldfusion.air.errors
coldfusion.air.events
coldfusion.service
coldfusion.service.events
coldfusion.service.mxml
com.adobe.acm.solutions.authoring.domain.extensions
com.adobe.acm.solutions.ccr.domain.extensions
com.adobe.consulting.pst.vo
com.adobe.dct.component
com.adobe.dct.component.datadictionary
com.adobe.dct.component.datadictionaryElement
com.adobe.dct.component.dataElementsPanel
com.adobe.dct.component.toolbars
com.adobe.dct.event
com.adobe.dct.exp
com.adobe.dct.model
com.adobe.dct.service
com.adobe.dct.service.provider
com.adobe.dct.transfer
com.adobe.dct.util
com.adobe.dct.view
com.adobe.ep.taskmanagement.domain
com.adobe.ep.taskmanagement.event
com.adobe.ep.taskmanagement.filter
com.adobe.ep.taskmanagement.services
com.adobe.ep.taskmanagement.util
com.adobe.ep.ux.attachmentlist.component
com.adobe.ep.ux.attachmentlist.domain
com.adobe.ep.ux.attachmentlist.domain.events
com.adobe.ep.ux.attachmentlist.domain.renderers
com.adobe.ep.ux.attachmentlist.skin
com.adobe.ep.ux.attachmentlist.skin.renderers
com.adobe.ep.ux.content.event
com.adobe.ep.ux.content.factory
com.adobe.ep.ux.content.handlers
com.adobe.ep.ux.content.managers
com.adobe.ep.ux.content.model.asset
com.adobe.ep.ux.content.model.preview
com.adobe.ep.ux.content.model.relation
com.adobe.ep.ux.content.model.search
com.adobe.ep.ux.content.model.toolbar
com.adobe.ep.ux.content.search
com.adobe.ep.ux.content.services
com.adobe.ep.ux.content.services.load
com.adobe.ep.ux.content.services.permissions
com.adobe.ep.ux.content.services.preview
com.adobe.ep.ux.content.services.providers
com.adobe.ep.ux.content.services.query
com.adobe.ep.ux.content.services.relationships
com.adobe.ep.ux.content.services.search.lccontent
com.adobe.ep.ux.content.services.version
com.adobe.ep.ux.content.view
com.adobe.ep.ux.content.view.components.activate
com.adobe.ep.ux.content.view.components.grid
com.adobe.ep.ux.content.view.components.grid.hover
com.adobe.ep.ux.content.view.components.grid.hover.component
com.adobe.ep.ux.content.view.components.grid.renderers
com.adobe.ep.ux.content.view.components.relationships
com.adobe.ep.ux.content.view.components.review
com.adobe.ep.ux.content.view.components.search.renderers
com.adobe.ep.ux.content.view.components.searchpod
com.adobe.ep.ux.content.view.components.toolbar
com.adobe.ep.ux.content.view.components.toolbar.controlRenderers
com.adobe.ep.ux.content.view.components.version
com.adobe.ep.ux.documentsubmit.component
com.adobe.ep.ux.documentsubmit.domain
com.adobe.ep.ux.documentsubmit.skin
com.adobe.ep.ux.taskaction.component
com.adobe.ep.ux.taskaction.domain
com.adobe.ep.ux.taskaction.domain.events
com.adobe.ep.ux.taskaction.skin
com.adobe.ep.ux.taskdetails.component
com.adobe.ep.ux.taskdetails.domain
com.adobe.ep.ux.taskdetails.skin
com.adobe.ep.ux.tasklist.component
com.adobe.ep.ux.tasklist.domain
com.adobe.ep.ux.tasklist.skin
com.adobe.ep.ux.webdocumentviewer.domain
com.adobe.exm.expression
com.adobe.exm.expression.error
com.adobe.exm.expression.event
com.adobe.exm.expression.impl
com.adobe.fiber.runtime.lib
com.adobe.fiber.services
com.adobe.fiber.services.wrapper
com.adobe.fiber.styles
com.adobe.fiber.util
com.adobe.fiber.valueobjects
com.adobe.gravity.binding
com.adobe.gravity.context
com.adobe.gravity.flex.bundleloader
com.adobe.gravity.flex.progress
com.adobe.gravity.flex.serviceloader
com.adobe.gravity.framework
com.adobe.gravity.init
com.adobe.gravity.service.bundleloader
com.adobe.gravity.service.logging
com.adobe.gravity.service.manifest
com.adobe.gravity.service.progress
com.adobe.gravity.tracker
com.adobe.gravity.ui
com.adobe.gravity.utility
com.adobe.gravity.utility.async
com.adobe.gravity.utility.error
com.adobe.gravity.utility.events
com.adobe.gravity.utility.factory
com.adobe.gravity.utility.flex.async
com.adobe.gravity.utility.logging
com.adobe.gravity.utility.message
com.adobe.gravity.utility.sequence
com.adobe.gravity.utility.url
com.adobe.guides.control
com.adobe.guides.domain
com.adobe.guides.i18n
com.adobe.guides.spark.components.skins
com.adobe.guides.spark.components.skins.mx
com.adobe.guides.spark.headers.components
com.adobe.guides.spark.headers.skins
com.adobe.guides.spark.layouts.components
com.adobe.guides.spark.layouts.skins
com.adobe.guides.spark.navigators.components
com.adobe.guides.spark.navigators.renderers
com.adobe.guides.spark.navigators.skins
com.adobe.guides.spark.util
com.adobe.guides.spark.wrappers.components
com.adobe.guides.spark.wrappers.skins
com.adobe.guides.submit
com.adobe.icc.dc.domain
com.adobe.icc.dc.domain.factory
com.adobe.icc.editors.events
com.adobe.icc.editors.handlers
com.adobe.icc.editors.managers
com.adobe.icc.editors.model
com.adobe.icc.editors.model.config
com.adobe.icc.editors.model.el
com.adobe.icc.editors.model.el.operands
com.adobe.icc.editors.model.el.operators
com.adobe.icc.enum
com.adobe.icc.external.dc
com.adobe.icc.obj
com.adobe.icc.services
com.adobe.icc.services.category
com.adobe.icc.services.config
com.adobe.icc.services.download
com.adobe.icc.services.export
com.adobe.icc.services.external
com.adobe.icc.services.formbridge
com.adobe.icc.services.fragmentlayout
com.adobe.icc.services.layout
com.adobe.icc.services.letter
com.adobe.icc.services.locator
com.adobe.icc.services.module
com.adobe.icc.services.render
com.adobe.icc.services.submit
com.adobe.icc.services.user
com.adobe.icc.token
com.adobe.icc.vo
com.adobe.icc.vo.render
com.adobe.icomm.assetplacement.controller
com.adobe.icomm.assetplacement.controller.utils
com.adobe.icomm.assetplacement.data
com.adobe.icomm.assetplacement.model
com.adobe.livecycle.assetmanager.client
com.adobe.livecycle.assetmanager.client.event
com.adobe.livecycle.assetmanager.client.handler
com.adobe.livecycle.assetmanager.client.managers
com.adobe.livecycle.assetmanager.client.model
com.adobe.livecycle.assetmanager.client.model.cms
com.adobe.livecycle.assetmanager.client.service
com.adobe.livecycle.assetmanager.client.service.search
com.adobe.livecycle.assetmanager.client.service.search.cms
com.adobe.livecycle.assetmanager.client.utils
com.adobe.livecycle.content
com.adobe.livecycle.rca.model
com.adobe.livecycle.rca.model.constant
com.adobe.livecycle.rca.model.document
com.adobe.livecycle.rca.model.participant
com.adobe.livecycle.rca.model.reminder
com.adobe.livecycle.rca.model.stage
com.adobe.livecycle.rca.service
com.adobe.livecycle.rca.service.core
com.adobe.livecycle.rca.service.core.delegate
com.adobe.livecycle.rca.service.process
com.adobe.livecycle.rca.service.process.delegate
com.adobe.livecycle.rca.token
com.adobe.livecycle.ria.security.api
com.adobe.livecycle.ria.security.service
com.adobe.mosaic.layouts
com.adobe.mosaic.layouts.dragAndDrop
com.adobe.mosaic.layouts.interfaces
com.adobe.mosaic.mxml
com.adobe.mosaic.om.constants
com.adobe.mosaic.om.events
com.adobe.mosaic.om.impl
com.adobe.mosaic.om.interfaces
com.adobe.mosaic.skinning
com.adobe.mosaic.sparklib.editors
com.adobe.mosaic.sparklib.optionMenu
com.adobe.mosaic.sparklib.scrollableMenu
com.adobe.mosaic.sparklib.scrollableMenu.skins
com.adobe.mosaic.sparklib.tabLayout
com.adobe.mosaic.sparklib.tabLayout.events
com.adobe.mosaic.sparklib.tabLayout.layouts
com.adobe.mosaic.sparklib.tabLayout.skins
com.adobe.mosaic.sparklib.text
com.adobe.mosaic.sparklib.util
com.adobe.solutions.acm.authoring.presentation
com.adobe.solutions.acm.authoring.presentation.actionbar
com.adobe.solutions.acm.authoring.presentation.common
com.adobe.solutions.acm.authoring.presentation.events
com.adobe.solutions.acm.authoring.presentation.fragment
com.adobe.solutions.acm.authoring.presentation.letter
com.adobe.solutions.acm.authoring.presentation.letter.data
com.adobe.solutions.acm.authoring.presentation.preview
com.adobe.solutions.acm.authoring.presentation.rte
com.adobe.solutions.acm.ccr.presentation
com.adobe.solutions.acm.ccr.presentation.contentcapture
com.adobe.solutions.acm.ccr.presentation.contentcapture.events
com.adobe.solutions.acm.ccr.presentation.contentcapture.preview
com.adobe.solutions.acm.ccr.presentation.datacapture
com.adobe.solutions.acm.ccr.presentation.datacapture.renderers
com.adobe.solutions.acm.ccr.presentation.pdf
com.adobe.solutions.exm
com.adobe.solutions.exm.authoring
com.adobe.solutions.exm.authoring.components.controls
com.adobe.solutions.exm.authoring.components.toolbars
com.adobe.solutions.exm.authoring.domain
com.adobe.solutions.exm.authoring.domain.expression
com.adobe.solutions.exm.authoring.domain.impl
com.adobe.solutions.exm.authoring.domain.method
com.adobe.solutions.exm.authoring.domain.variable
com.adobe.solutions.exm.authoring.enum
com.adobe.solutions.exm.authoring.events
com.adobe.solutions.exm.authoring.model
com.adobe.solutions.exm.authoring.renderer
com.adobe.solutions.exm.authoring.view
com.adobe.solutions.exm.expression
com.adobe.solutions.exm.impl
com.adobe.solutions.exm.impl.method
com.adobe.solutions.exm.method
com.adobe.solutions.exm.mock
com.adobe.solutions.exm.mock.method
com.adobe.solutions.exm.runtime
com.adobe.solutions.exm.runtime.impl
com.adobe.solutions.exm.variable
com.adobe.solutions.prm.constant
com.adobe.solutions.prm.domain
com.adobe.solutions.prm.domain.factory
com.adobe.solutions.prm.domain.impl
com.adobe.solutions.prm.domain.manager
com.adobe.solutions.prm.presentation.asset
com.adobe.solutions.prm.presentation.constant
com.adobe.solutions.prm.presentation.document
com.adobe.solutions.prm.presentation.event
com.adobe.solutions.prm.presentation.file
com.adobe.solutions.prm.presentation.project
com.adobe.solutions.prm.presentation.team
com.adobe.solutions.prm.presentation.util
com.adobe.solutions.prm.service
com.adobe.solutions.prm.services.impl
com.adobe.solutions.prm.vo
com.adobe.solutions.rca.constant
com.adobe.solutions.rca.domain
com.adobe.solutions.rca.domain.common
com.adobe.solutions.rca.domain.factory
com.adobe.solutions.rca.domain.impl
com.adobe.solutions.rca.domain.impl.manager
com.adobe.solutions.rca.domain.manager
com.adobe.solutions.rca.presentation
com.adobe.solutions.rca.presentation.comment
com.adobe.solutions.rca.presentation.constant
com.adobe.solutions.rca.presentation.event
com.adobe.solutions.rca.presentation.gantt
com.adobe.solutions.rca.presentation.gantt.ruler
com.adobe.solutions.rca.presentation.template
com.adobe.solutions.rca.presentation.template.audit
com.adobe.solutions.rca.presentation.template.definition
com.adobe.solutions.rca.presentation.template.documents
com.adobe.solutions.rca.presentation.template.stages
com.adobe.solutions.rca.presentation.util
com.adobe.solutions.rca.service
com.adobe.solutions.rca.services.impl
com.adobe.solutions.rca.vo
com.adobe.solutions.rca.vo.um
com.adobe.viewsource
fl.accessibility
fl.containers
fl.controls
fl.controls.dataGridClasses
fl.controls.listClasses
fl.controls.progressBarClasses
fl.core
fl.data
fl.display
fl.events
fl.ik
fl.lang
fl.livepreview
fl.managers
fl.motion
fl.motion.easing
fl.rsl
fl.text
fl.transitions
fl.transitions.easing
fl.video
flash.accessibility
flash.concurrent
flash.crypto
flash.data
flash.desktop
flash.display
flash.display3D
flash.display3D.textures
flash.errors
flash.events
flash.external
flash.filesystem
flash.filters
flash.geom
flash.globalization
flash.html
flash.media
flash.net
flash.net.dns
flash.net.drm
flash.notifications
flash.permissions
flash.printing
flash.profiler
flash.sampler
flash.security
flash.sensors
flash.system
flash.text
flash.text.engine
flash.text.ime
flash.ui
flash.utils
flash.xml
flashx.textLayout
flashx.textLayout.compose
flashx.textLayout.container
flashx.textLayout.conversion
flashx.textLayout.edit
flashx.textLayout.elements
flashx.textLayout.events
flashx.textLayout.factory
flashx.textLayout.formats
flashx.textLayout.operations
flashx.textLayout.utils
flashx.undo
ga.controls
ga.layouts
ga.model
ga.uiComponents
ga.util
ga.views
ga.wrappers
lc.foundation
lc.foundation.domain
lc.foundation.events
lc.foundation.ui
lc.foundation.util
lc.preloader
lc.procmgmt
lc.procmgmt.commands
lc.procmgmt.domain
lc.procmgmt.events
lc.procmgmt.formbridge
lc.procmgmt.impl
lc.procmgmt.ui.attachments
lc.procmgmt.ui.controls
lc.procmgmt.ui.controls.card
lc.procmgmt.ui.controls.renderer
lc.procmgmt.ui.help
lc.procmgmt.ui.layout
lc.procmgmt.ui.presentationmodel
lc.procmgmt.ui.process
lc.procmgmt.ui.search
lc.procmgmt.ui.startpoint
lc.procmgmt.ui.task
lc.procmgmt.ui.task.form
lc.procmgmt.ui.task.form.commands
lc.procmgmt.ui.tracking
mx.accessibility
mx.automation
mx.automation.air
mx.automation.delegates
mx.automation.delegates.advancedDataGrid
mx.automation.delegates.charts
mx.automation.delegates.containers
mx.automation.delegates.controls
mx.automation.delegates.controls.dataGridClasses
mx.automation.delegates.controls.fileSystemClasses
mx.automation.delegates.core
mx.automation.delegates.flashflexkit
mx.automation.events
mx.binding
mx.binding.utils
mx.charts
mx.charts.chartClasses
mx.charts.effects
mx.charts.effects.effectClasses
mx.charts.events
mx.charts.renderers
mx.charts.series
mx.charts.series.items
mx.charts.series.renderData
mx.charts.styles
mx.collections
mx.collections.errors
mx.containers
mx.containers.accordionClasses
mx.containers.dividedBoxClasses
mx.containers.errors
mx.containers.utilityClasses
mx.controls
mx.controls.advancedDataGridClasses
mx.controls.dataGridClasses
mx.controls.listClasses
mx.controls.menuClasses
mx.controls.olapDataGridClasses
mx.controls.scrollClasses
mx.controls.sliderClasses
mx.controls.textClasses
mx.controls.treeClasses
mx.controls.videoClasses
mx.core
mx.core.windowClasses
mx.data
mx.data.crypto
mx.data.errors
mx.data.events
mx.data.messages
mx.data.mxml
mx.data.offline.errors
mx.data.utils
mx.effects
mx.effects.easing
mx.effects.effectClasses
mx.events
mx.filters
mx.flash
mx.formatters
mx.geom
mx.graphics
mx.graphics.codec
mx.graphics.shaderClasses
mx.logging
mx.logging.errors
mx.logging.targets
mx.managers
mx.messaging
mx.messaging.channels
mx.messaging.config
mx.messaging.errors
mx.messaging.events
mx.messaging.management
mx.messaging.messages
mx.modules
mx.netmon
mx.olap
mx.olap.aggregators
mx.preloaders
mx.printing
mx.resources
mx.rpc
mx.rpc.events
mx.rpc.http
mx.rpc.http.mxml
mx.rpc.livecycle
mx.rpc.mxml
mx.rpc.remoting
mx.rpc.remoting.mxml
mx.rpc.soap
mx.rpc.soap.mxml
mx.rpc.wsdl
mx.rpc.xml
mx.skins
mx.skins.halo
mx.skins.spark
mx.skins.wireframe
mx.skins.wireframe.windowChrome
mx.states
mx.styles
mx.utils
mx.validators
org.osmf.containers
org.osmf.display
org.osmf.elements
org.osmf.events
org.osmf.layout
org.osmf.logging
org.osmf.media
org.osmf.metadata
org.osmf.net
org.osmf.net.dvr
org.osmf.net.httpstreaming
org.osmf.net.metrics
org.osmf.net.qos
org.osmf.net.rtmpstreaming
org.osmf.net.rules
org.osmf.traits
org.osmf.utils
spark.accessibility
spark.automation.delegates
spark.automation.delegates.components
spark.automation.delegates.components.gridClasses
spark.automation.delegates.components.mediaClasses
spark.automation.delegates.components.supportClasses
spark.automation.delegates.skins.spark
spark.automation.events
spark.collections
spark.components
spark.components.calendarClasses
spark.components.gridClasses
spark.components.mediaClasses
spark.components.supportClasses
spark.components.windowClasses
spark.core
spark.effects
spark.effects.animation
spark.effects.easing
spark.effects.interpolation
spark.effects.supportClasses
spark.events
spark.filters
spark.formatters
spark.formatters.supportClasses
spark.globalization
spark.globalization.supportClasses
spark.layouts
spark.layouts.supportClasses
spark.managers
spark.modules
spark.preloaders
spark.primitives
spark.primitives.supportClasses
spark.skins
spark.skins.mobile
spark.skins.mobile.supportClasses
spark.skins.spark
spark.skins.spark.mediaClasses.fullScreen
spark.skins.spark.mediaClasses.normal
spark.skins.spark.windowChrome
spark.skins.wireframe
spark.skins.wireframe.mediaClasses
spark.skins.wireframe.mediaClasses.fullScreen
spark.transitions
spark.utils
spark.validators
spark.validators.supportClasses
xd.core.axm.enterprise.view.components
xd.core.axm.enterprise.view.skins
xd.core.axm.view.components
xd.core.axm.view.components.support

語言元素

全域常數
全域函數
運算子
陳述式、關鍵字和指令
特殊類型

附錄

新增內容
編譯器錯誤
編譯器警告
執行階段錯誤
移轉至 ActionScript 3
支援的字元集
僅限 MXML 標籤
移動 XML 元素
Timed Text 標籤
不建議元素清單
AccessibilityImplementation 常數
如何使用 ActionScript 範例
法律聲明
套件flash.display
類別public class BitmapData
繼承BitmapData Inheritance Object
實作 IBitmapDrawable

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

BitmapData 類別可讓您使用 Bitmap 物件的資料 (像素)。您可以使用 BitmapData 類別的方法來建立任意調整大小的透明或不透明點陣圖影像,而且在執行階段中以各種方式操作。 您也可以存取使用 flash.display.Loader 類別載入的點陣圖影像的 BitmapData。

此類別可讓您將點陣圖顯示和 Flash Player 的內部顯示更新程序分開。 藉由直接操作 BitmapData 物件,您可以建立複雜的影像,但是不會因為需要頻繁地重新繪製向量資料內容而產生對每個影格的工作負荷。

BitmapData 類別方法支援一些特效,而這些特效無法透過非點陣圖顯示物件可用的濾鏡來使用。

BitmapData 物件包含像素資料陣列。 此資料可代表完全不透明的點陣圖或是包含 Alpha 色版資料的透明點陣圖。 任一類型的 BitmapData 物件都是儲存成 32 位元整數的緩衝區。 每個 32 位元整數都會決定點陣圖中單一像素的屬性。

每個 32 位元整數都是由四個 8 位元色版值 (從 0 到 255) 組合而成,分別描述像素的 Alpha 透明度、紅色、綠色以及藍色 (ARGB) 值。(關於 ARGB 值,最高位元組代表 Alpha 色版值,並緊接著紅色、綠色與藍色)。

當您將這四個色版 (Alpha、紅色、綠色和藍色) 與 BitmapData.copyChannel() 方法或 DisplacementMapFilter.componentXDisplacementMapFilter.componentY 屬性搭配使用時,這四個色版會以數字來表示,而這些數字會在 BitmapDataChannel 類別中以下列常數表示:

  • BitmapDataChannel.ALPHA
  • BitmapDataChannel.RED
  • BitmapDataChannel.GREEN
  • BitmapDataChannel.BLUE

您可以使用 Bitmap 物件的 bitmapData 屬性,將 BitmapData 物件附加至 Bitmap 物件。

您可以利用 Graphics.beginBitmapFill() 方法,使用 BitmapData 物件來填滿 Graphics 物件。

在 AIR 執行階段中,DockIcon、Icon、InteractiveIcon 和 SystemTrayIcon 類別都包含 bitmaps 屬性,此屬性為 BitmapData 物件的陣列,這些物件可定義圖示的點陣圖影像。

在 AIR 1.5 和 Flash Player 10 中,BitmapData 物件的大小上限為 8,191 像素寬度或高度,且像素總計不得超過 16,777,215 像素 (因此,如果 BitmapData 物件的寬度為 8,191 像素,則其高度上限為 2,048 像素)。若為 Flash Player 9 和 AIR 1.1 及其更早版本,高度和寬度的上限都是 2,880 像素。

從 AIR 3 和 Flash Player 11 開始,已經移除 BitmapData 物件的大小限制。點陣圖的大小上限現在取決於作業系統。

如果 BitmapData 物件無效的話 (例如,如果 BitmapData 物件擁有 height == 0width == 0),或其已經透過 dispose() 加以處理,呼叫 BitmapData 物件的任何方法或屬性都會擲出 ArgumentError 錯誤。

檢視範例

相關 API 元素



公用屬性
 屬性定義自
 Inheritedconstructor : Object
類別物件的參照或是特定物件實體的建構函數。
Object
  height : int
[唯讀] 點陣圖影像的高度,以像素為單位。
BitmapData
  rect : Rectangle
[唯讀] 定義點陣圖影像大小和位置的矩形。
BitmapData
  transparent : Boolean
[唯讀] 定義點陣圖影像是否支援每個像素透明度。
BitmapData
  width : int
[唯讀] 點陣圖影像的寬度,以像素為單位。
BitmapData
公用方法
 方法定義自
  
BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
以指定的寬度和高度來建立 BitmapData 物件。
BitmapData
  
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
採用來源影像和濾鏡物件並產生已套用濾鏡的影像。
BitmapData
  
傳回具有和內含點陣圖完全相同副本、且為原始實體副本的新 BitmapData 物件。
BitmapData
  
使用 ColorTransform 物件調整點陣圖影像指定區域中的顏色值。
BitmapData
  
compare(otherBitmapData:BitmapData):Object
比較兩個 BitmapData 物件。
BitmapData
  
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
從另一個 BitmapData 物件或目前 BitmapData 物件的一個色版,將資料傳送到目前 BitmapData 物件的色版。
BitmapData
  
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
在影像之間提供執行不含延伸、旋轉或顏色特效的像素處理快速程序。
BitmapData
  
從像素資料的矩形區域中將位元組陣列填色。
BitmapData
  
釋放用來儲存 BitmapData 物件的記憶體。
BitmapData
  
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
使用 Flash 執行階段的向量描繪器,在點陣圖影像上繪製 source 顯示物件。
BitmapData
  
drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void
使用 Flash 執行階段的向量描繪器,在點陣圖影像上繪製 source 顯示物件。
BitmapData
  
encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray
使用選取的壓縮程式演算法壓縮這個 BitmapData 物件,並傳回新的 ByteArray 物件。
BitmapData
  
以指定的 ARGB 顏色對像素的矩形區域填色。
BitmapData
  
floodFill(x:int, y:int, color:uint):void
對於從 (x, y) 座標開始的影像,執行填色作業,並填入特定顏色。
BitmapData
  
指定 BitmapData 物件、來源矩形以及濾鏡物件,來決定 applyFilter() 方法呼叫所影響的目標矩形。
BitmapData
  
getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
決定矩形區域,將位於點陣圖影像內所有指定顏色的像素全部封閉起來 (如果 findColor 參數設為 true),或者將不包含指定顏色的所有像素封閉起來 (如果 findColor 參數設為 false)。
BitmapData
  
傳回整數,代表 BitmapData 物件中特定點 (x, y) 的 RGB 像素值。
BitmapData
  
傳回 ARGB 顏色數值,其中包含 Alpha 色版資料和 RGB 資料。
BitmapData
  
從像素資料的矩形區域產生位元組陣列。
BitmapData
  
從矩形區域的像素資料產生向量陣列。
BitmapData
 Inherited
指出物件是否有已定義的指定屬性。
Object
  
計算 BitmapData 物件的 256 色二進位長條圖。
BitmapData
  
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
在一個點陣圖影像和一個點、矩形或其它點陣圖影像之間,執行像素層級作用區域偵測。
BitmapData
 Inherited
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。
Object
  
鎖定影像,以便當這個 BitmapData 物件變更時,其它參照此 BitmapData 物件 (例如 Bitmap 物件) 的任何物件不會跟著更新。
BitmapData
  
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
執行從來源影像到目標影像的每個色版的混合。
BitmapData
  
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
以呈現隨機雜點的像素來填色影像。
BitmapData
  
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
重新對應影像 (最多具有四個顏色面板資料陣列) 中的顏色色版值,每個顏色色版值對應一個色版。
BitmapData
  
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
產生 Perlin 雜點影像。
BitmapData
  
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
執行從來源影像至目標影像,或使用相同影像的像素溶解效果。
BitmapData
 Inherited
指出指定的屬性是否存在,以及是否可列舉。
Object
  
以一定的 (x, y) 像素量來捲動影像。
BitmapData
  
setPixel(x:int, y:int, color:uint):void
設定 BitmapData 物件的單一像素。
BitmapData
  
setPixel32(x:int, y:int, color:uint):void
設定 BitmapData 物件單一像素的顏色和 Alpha 透明度值。
BitmapData
  
setPixels(rect:Rectangle, inputByteArray:ByteArray):void
將位元組陣列轉換為像素資料的矩形區域。
BitmapData
 Inherited
為迴圈作業設定動態屬性的可用性。
Object
  
setVector(rect:Rectangle, inputVector:Vector.<uint>):void
將向量轉換為像素資料的矩形區域。
BitmapData
  
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
根據指定的臨界值來測試影像的像素值,並設定將測試傳遞至新顏色值的像素。
BitmapData
 Inherited
傳回代表此物件的字串,根據地區特定慣例進行格式化。
Object
 Inherited
會傳回指定之物件的字串形式。
Object
  
unlock(changeRect:Rectangle = null):void
解除鎖定影像,以便當這個 BitmapData 物件變更時,其它參照此 BitmapData 物件 (例如 Bitmap 物件) 的任何物件不會跟著更新。
BitmapData
 Inherited
會傳回指定之物件的基本值。
Object
屬性詳細資訊

height

屬性
height:int  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

點陣圖影像的高度,以像素為單位。



實作
    public function get height():int

rect

屬性 
rect:Rectangle  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

定義點陣圖影像大小和位置的矩形。 矩形的頂端和左側的位置都是 0;寬度和高度等於 BitmapData 物件的像素寬度和高度。



實作
    public function get rect():Rectangle

transparent

屬性 
transparent:Boolean  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

定義點陣圖影像是否支援每個像素透明度。 您只可以在建構 BitmapData 物件時設定此值,方法為將建構函式的 transparent 參數傳遞為 true。 接著,在您建立 BitmapData 物件之後,可以藉由判斷 transparent 屬性的值是否為 true,來檢查它是否支援每個像素透明度。



實作
    public function get transparent():Boolean

width

屬性 
width:int  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

點陣圖影像的寬度,以像素為單位。



實作
    public function get width():int
建構函式詳細資料

BitmapData

()建構函式
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

以指定的寬度和高度來建立 BitmapData 物件。 如果指定 fillColor 參數的值,點陣圖中的每個像素都會設定為此顏色。

根據預設,建立的點陣圖為透明,除非您傳遞 false 值供 transparent 參數使用。 當您建立不透明的點陣圖時,就無法再變更為透明的點陣圖。 不透明點陣圖中的每個像素,僅使用 24 位元的顏色色版資訊。 如果將點陣圖定義為透明,每個像素會使用 32 位元的顏色色版資訊,包含 Alpha 透明度色版。

在 AIR 1.5 和 Flash Player 10 中,BitmapData 物件的大小上限為 8,191 像素寬度或高度,且像素總計不得超過 16,777,215 像素 (因此,如果 BitmapData 物件的寬度為 8,191 像素,則其高度上限為 2,048 像素)。若為 Flash Player 9 和 AIR 1.1 及其更早版本,高度和寬度的上限都是 2,880 像素。如果指定的寬度或高度值大於 2880,就不會建立新實體。

參數
width:int — 點陣圖影像的寬度,以像素為單位。
 
height:int — 點陣圖影像的高度,以像素為單位。
 
transparent:Boolean (default = true) — 指定點陣圖影像是否支援每個像素透明度。 預設值為 true (透明)。 若要建立完全透明點陣圖,將 transparent 參數值設為 true,並將 fillColor 參數值設為 0x00000000 (或 0)。 將 transparent 屬性設為 false 可以稍微改善顯示效能。
 
fillColor:uint (default = 0xFFFFFFFF) — 您可以使用 32 位元 ARGB 顏色值對點陣圖影像區域進行填色。 預設值為 0xFFFFFFFF (純白)。

擲回值
ArgumentError — 寬度和/或高度超出最大尺寸。
方法詳細資訊

applyFilter

()方法
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

採用來源影像和濾鏡物件並產生已套用濾鏡的影像。

此方法會依賴內建濾鏡物件的行為,該物件會決定受到輸入來源矩形影響的目標矩形。

套用濾鏡之後,結果影像會比輸入影像大。 例如,如果使用 BlurFilter 類別來模糊化 (50,50,100,100) 的來源矩形以及 (10,10) 的目標點,目標影像中變更的區域將會因為模糊化而比 (10,10,60,60) 大。 這通常會在呼叫 applyFilter() 時,在內部發生。

如果 sourceBitmapData 參數的 sourceRect 參數是一個內部區域,如在一個 200 x 200 影像的 (50,50,100,100) 中,濾鏡會使用 sourceRect 參數外部的來源像素來產生目標矩形。

如果 BitmapData 物件與指定為 sourceBitmapData 參數的物件是同一個物件,則應用程式會使用物件的暫存副本來執行濾鏡操作。為了達到最佳效能,請避免這種情況發生。

參數

sourceBitmapData:BitmapData — 要使用的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 物件,或者參照到目前的 BitmapData 實體。
 
sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
destPoint:Point — 目標影像 (目前 BitmapData 實體) 內對應至來源矩形左上角的點。
 
filter:BitmapFilter — 用來執行濾鏡操作的濾鏡物件。 每種類型的濾鏡都有特定的需求,如下列所示:
  • BlurFilter — 這個濾鏡可以使用不透明或是透明的來源和目標影像。 如果影像的格式不符合,在套用濾鏡期間所產生的來源影像副本就會符合目標影像格式。
  • BevelFilter、DropShadowFilter、GlowFilter — 這些濾鏡的目標影像必須是透明的影像。呼叫 DropShadowFilter 或 GlowFilter 會建立一個影像,其中包含投影或光暈的 Alpha 色版資料。 它不會將投影建立在目標影像上。 如果這些濾鏡之一用在不透明的目標影像上,就會擲回的例外。
  • ConvolutionFilter — 這個濾鏡可以使用不透明或是透明的來源和目標影像。
  • ColorMatrixFilter — 這個濾鏡可以使用不透明或是透明的來源和目標影像。
  • DisplacementMapFilter — 這個濾鏡可以使用不透明或是透明的來源和目標影像,但是來源和目標影像的格式必須一樣。


擲回值
TypeError — sourceBitmapData、sourceRect、destPoint 或濾鏡都是 null。
 
IllegalOperationError — BitmapData 物件的透明度與濾鏡操作不相容。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明如何將模糊濾鏡套用至 BitmapData 實體:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();
bmd.applyFilter(bmd, rect, pt, filter);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

clone

()方法 
public function clone():BitmapData

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

傳回具有和內含點陣圖完全相同副本、且為原始實體副本的新 BitmapData 物件。

傳回值
BitmapData — 具有和原始物件完全相同的新 BitmapData 物件。

範例  ( 如何使用本範例 )

下列範例將說明如何複製 BitmapData 實體,並顯示當您修改所複製的 BitmapData 實體時,原始物件並不會遭到修改:
import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(100, 80, false, 0x00000000);
var bmd2:BitmapData = bmd1.clone();

bmd1.setPixel32(1, 1, 0xFFFFFFFF);

trace(bmd1.getPixel32(1, 1).toString(16)); // ffffffff
trace(bmd2.getPixel32(1, 1).toString(16)); // ff000000

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);

var bm2:Bitmap = new Bitmap(bmd2);
bm2.x = 110;
this.addChild(bm2);

colorTransform

()方法 
public function colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

使用 ColorTransform 物件調整點陣圖影像指定區域中的顏色值。 如果矩形符合點陣圖影像的邊界,則此方法將會變化整個影像的顏色值。

參數

rect:Rectangle — 定義 ColorTransform 物件套用之影像區域的 Rectangle 物件。
 
colorTransform:flash.geom:ColorTransform — 用來說明要套用之顏色轉換值的 ColorTransform 物件。


擲回值
TypeError — rect 或 colorTransform 都是 null。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明如何將顏色轉換套用至 BitmapData 物件的左半邊 (矩形)。
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000);

var cTransform:ColorTransform = new ColorTransform();
cTransform.alphaMultiplier = 0.5
var rect:Rectangle = new Rectangle(0, 0, 40, 30);
bmd.colorTransform(rect, cTransform);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

compare

()方法 
public function compare(otherBitmapData:BitmapData):Object

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

比較兩個 BitmapData 物件。 如果兩個 BitmapData 物件都具有相同的尺寸 (寬度與高度),則方法會傳回新的 BitmapData 物件,而且在兩個來源物件中的所有像素裡,每個像素就是其它像素的「色差」:

  • 如果兩個像素相等,則像素色差為 0x00000000。
  • 如果兩個像素具有不同的 RGB 值 (忽略 Alpha 值),則像素色差為 0xRRGGBB,其中 RR/GG/BB 是紅色、綠色和藍色色版之間的個別色差 (來源物件中的像素值減去 otherBitmapData 物件中的像素值)。 在這裡 Alpha 色版的色差會被忽略。
  • 如果只有 Alpha 色版值不同, 像素值為 0xZZFFFFFF,當中的 ZZ 為 Alpha 值中的差異 (來源物件的 Alpha 值減去 otherBitmapData 物件中的 Alpha 值)。

例如,假設有下列兩個 BitmapData 物件:

     var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800);
     var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600);
     var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
     trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200
     

注意: 用來填滿兩個 BitmapData 物件的所有顏色在 RGB 值上都有些許的色差 (0xFF0000 與 0xFFAA00)。 compare() 方法的結果會產生新的 BitmapData 物件,其中每個像素在兩個點陣圖之中會有 RGB 值的色差。

假設下列兩個 BitmapData 物件當中,RGB 顏色都一樣,但是 Alpha 值不同:

     var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
     var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
     var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
     trace ("0x" + diffBmpData.getPixel32(0,0).toString(16); // 0x33ffffff
     

compare() 方法的結果會產生新的 BitmapData 物件,其中每個像素在兩個點陣圖之中會有 Alpha 值的色差。

如果這些 BitmapData 物件都相等 (具有相同的寬度、高度以及相同的像素值),則方法會傳回數字 0。

如果 BitmapData 物件的寬度不相等,方法會傳回數字 -3。

如果這些 BitmapData 物件的高度不相等,但是寬度相等,則方法會傳回數字 -4。

下列範例將使用不同的寬度 (50 與 60) 來比較兩個 Bitmap 物件:

     var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000);
     var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00);
     trace(bmd1.compare(bmd2)); // -4
     

參數

otherBitmapData:BitmapData — 與來源 BitmapData 物件比較的 BitmapData 物件。

傳回值
Object — 如果兩個 BitmapData 物件都具有相同的尺寸 (寬度與高度),則方法會傳回新的 BitmapData 物件,而且在兩個物件中都會存在色差 (請參閱主要討論內容)。 如果這兩個 BitmapData 物件相等,則此方法會傳回數字 0。 如果這兩個 BitmapData 物件的寬度不相等,則此方法會傳回數字 -3。 如果這兩個 BitmapData 物件的高度不相等,則此方法會傳回數字 -4。

擲回值
TypeError — otherBitmapData 是 null。

範例  ( 如何使用本範例 )

下列範例將顯示 BitmapData 物件中的像素值,該物件是藉由將相同尺寸的兩個 BitmapData 物件加以比較所產生:
import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00);
var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00);
var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2));
var diffValue:String = diffBmpData.getPixel32(1, 1).toString(16);
trace (diffValue); // 33ffffff

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 60;

copyChannel

()方法 
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

從另一個 BitmapData 物件或目前 BitmapData 物件的一個色版,將資料傳送到目前 BitmapData 物件的色版。 在目標 BitmapData 物件裡其它色版中的所有資料都會保留下來。

來源色版值和目標色版值可能為下列值的其中之一:

  • BitmapDataChannel.RED
  • BitmapDataChannel.GREEN
  • BitmapDataChannel.BLUE
  • BitmapDataChannel.ALPHA

參數

sourceBitmapData:BitmapData — 要使用的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 物件,或者參照到目前的 BitmapData 物件。
 
sourceRect:Rectangle — 來源 Rectangle 物件。 如果您只想要複製點陣圖中較小區域的色版資料,請指定小於 BitmapData 物件整體大小的來源矩形。
 
destPoint:Point — 目標 Point 物件,代表將放置新色版資料的矩形區域之左上角。 如果您只想要將色版資料從某個區域複製到目標影像的不同區域上,請指定 (0,0) 以外的點。
 
sourceChannel:uint — 來源色版。 使用來自 BitmapDataChannel 類別 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.ALPHA) 的值。
 
destChannel:uint — 目標色版。 使用來自 BitmapDataChannel 類別 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.ALPHA) 的值。


擲回值
TypeError — sourceBitmapData、sourceRect 或 destPoint 都是 null。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明如何將 BitmapData 物件中的紅色色版複製到該物件的藍色色版,並置於 20 x 20 的像素區域中:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE);

var bm:Bitmap = new Bitmap(bmd);
this.addChild(bm);    

copyPixels

()方法 
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

在影像之間提供執行不含延伸、旋轉或顏色特效的像素處理快速程序。 這個方法會將來源影像的矩形區域,複製到目標 BitmapData 物件之目標點上相同大小的矩形區域中。

如果包含 alphaBitmapalphaPoint 參數,則可以使用次要的影像當作來源影像的 Alpha 來源。 如果來源影像具有 Alpha 資料,則兩組 Alpha 資料都會用來將來源影像的像素合成至目標影像上。 alphaPoint 參數是 Alpha 影像對應至來源矩形左上角的點。 任何位於來源影像和 Alpha 影像交會點外的像素都不會複製到目標影像上。

mergeAlpha 屬性會控制當透明影像複製到另一個透明影像時,是否要使用 Alpha 色版。 若要複製包含 Alpha 色版資料的像素,請將 mergeAlpha 屬性設定為 true。 根據預設,mergeAlpha 屬性為 false

參數

sourceBitmapData:BitmapData — 要複製像素的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 實體,或者參照到目前的 BitmapData 實體。
 
sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
destPoint:Point — 目標點,代表要放置新像素的矩形區域之左上角。
 
alphaBitmapData:BitmapData (default = null) — 次要的 Alpha BitmapData 物件來源。
 
alphaPoint:Point (default = null) — 在 Alpha BitmapData 物件來源中對應至 sourceRect 參數左上角的點。
 
mergeAlpha:Boolean (default = false) — 若要使用 Alpha 色版,請將值設為 true。 若要複製像素 (不使用 Alpha 色版),請將值設定為 false


擲回值
TypeError — sourceBitmapData、sourceRect 與 destPoint 都是 null。

範例  ( 如何使用本範例 )

下列範例將說明如何從某個 BitmapData 物件的 20 x 20 像素區域中,將像素複製到另一個 BitmapData 物件:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF);
var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(10, 10);
bmd2.copyPixels(bmd1, rect, pt);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 50;

copyPixelsToByteArray

()方法 
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 11.4, AIR 3.4

從像素資料的矩形區域中將位元組陣列填色。這個方法會從 ByteArray 的 position 索引開始,將每個像素的無正負號整數 (32 位元未相乘的像素值) 寫入位元組陣列中。必要時,位元組陣列的大小會增加到所需的位元組數目,以容納所有像素資料。

參數

rect:Rectangle — 位於目前 BitmapData 物件的矩形區域
 
data:ByteArray — 目標 ByteArray 物件


擲回值
TypeError — 因為 rect 引數為 null,或者 data 引數為 null

相關 API 元素

dispose

()方法 
public function dispose():void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

釋放用來儲存 BitmapData 物件的記憶體。

某個影像呼叫 dispose() 方法時,會將此影像的高度和寬度都設定為 0。 所有針對此 BitmapData 實體之方法或屬性的後續呼叫都會失敗,並擲回例外。

BitmapData.dispose() 立即釋放實際點陣圖資料佔用的記憶體 (一個點陣圖會消耗 64 MB 的記憶體)。使用 BitmapData.dispose() 之後,BitmapData 物件再也無法使用,如果您在 BitmapData 物件上呼叫函數,則 Flash 執行階段會擲出例外。不過,BitmapData.dispose() 並不會對 BitmapData 物件 (大約 128 個位元組) 進行垃圾回收;垃圾回收程式收集 BitmapData 物件時,會釋放實際 BitmapData 物件佔用的記憶體。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明在呼叫 dispose() 方法之後,再呼叫 BitmapData 物件之方法所產生的效果 (會擲回例外):
import flash.display.BitmapData;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF

myBitmapData.dispose();
try {
    trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
    trace(error); // ArgumentError
}

draw

()方法 
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

使用 Flash 執行階期的向量描繪器,在點陣圖影像上繪製 source 顯示物件。您可以指定 matrixcolorTransformblendMode,以及目標 clipRect 參數來控制顯示的執行方式。 或者,您也可以指定是否在點陣圖縮放時平滑化處理 (只有當來源物件是 BitmapData 物件才能這麼處理)。

注意:drawWithQuality() 方法的運作方式與 draw() 方法完全相同,只是它不會使用 Stage.quality 屬性來決定向量顯示的品質,請將 quality 參數指定給 drawWithQuality() 方法。

這個方法會直接對應至編寫工具介面中使用物件標準向量描繪器來繪製物件的方式。

來源顯示物件並不會針對此呼叫使用所套用的任何變形。 會將它當做存在於元件庫或檔案中,而且不具有矩陣變形、顏色轉換和混合模式。 若要藉由使用顯示物件的轉換屬性來加以繪製 (例如繪製影片片段),可以將其 transform 屬性物件複製到使用 BitmapData 物件之 Bitmap 物件的 transform 屬性上。

Flash Player 9.0.115.0 和更新版本以及 Adobe AIR 透過 RTMP 支援此方法。您可以使用伺服器端指令碼控制 Flash Media Server 上串流的存取。如需詳細資訊,請參閱「Adobe Flash Media Server 伺服器端 ActionScript 語言參考」中的 Client.audioSampleAccessClient.videoSampleAccess 屬性。

如果 source 物件及其所有子物件 (在 Sprite 或 MovieClip 物件的情況下) 不是來自與呼叫者相同的網域,也不是位於呼叫者可存取的內容中 (藉由呼叫 Security.allowDomain() 方法進行存取),呼叫 draw() 會擲回 SecurityError 例外。應用程式安全執行程序中的 AIR 內容不受此限制。

使用載入的點陣圖影像當做 source 還存有一些限制。如果載入的影像與呼叫端來自相同網域,呼叫 draw() 方法就會成功。再者,影像伺服器上的跨網域原則檔可能授與權限,允許 SWF 內容的網域呼叫 draw() 方法。在此情況下,您必須設定 LoaderContext 物件的 checkPolicyFile 屬性,並且使用該物件做為 context 參數來呼叫 Loader 物件的 load() 方法以載入影像。應用程式安全執行程序中的 AIR 內容不受這些限制。

在 Windows 中,draw() 方法無法捕捉內嵌於 Adobe AIR 之 HTMLLoader 物件的 HTML 網頁內之 SWF 內容。

draw() 方法既無法捕捉 Adobe AIR 中的 PDF 內容,也無法捕捉 Adobe AIR 中內嵌於 wmode 特質設為 "window" 之 HTML 的 SWF 內容。

參數

source:IBitmapDrawable — 要繪製到 BitmapData 物件的顯示物件或 BitmapData 物件。(DisplayObject 與 BitmapData 類別會實作 IBitmapDrawable 介面)。
 
matrix:Matrix (default = null) — 用來縮放、旋轉或轉移點陣圖之座標的 Matrix 物件。 如果您不想將矩陣變形套用到影像上,請使用預設的 new Matrix() 建構函式,或傳遞 null 值,將此參數設為單位矩陣。
 
colorTransform:flash.geom:ColorTransform (default = null) — 用來調整點陣圖顏色值的 ColorTransform 物件。 如果沒有提供物件,點陣圖影像的顏色就不會變化。 如果您必須傳遞此參數,但又不想轉換影像,請將此參數設為以預設 new ColorTransform() 建構函式建立的 ColorTransform 物件。
 
blendMode:String (default = null) — 來自 flash.display.BlendMode 類別的字串值,可指定要套用至結果點陣圖的混合模式。
 
clipRect:Rectangle (default = null) — 用來定義要繪製的來源物件區域之 Rectangle 物件。 如果您沒有提供此值,就不會產生剪裁效果,並且會繪製整個來源物件。
 
smoothing:Boolean (default = false) — Boolean 值,決定因 matrix 參數中指定的縮放或旋轉而縮放或旋轉 BitmapData 物件時是否要進行平滑化處理。只有當 source 參數是 BitmapData 物件的情況下,才能套用 smoothing 參數。將 smoothing 設定為 false 時,旋轉或縮放的 BitmapData 影像會呈現像素化或鋸齒狀。 例如,下列兩個影像都會使用相同的 BitmapData 物件做為 source 參數,但是左邊的影像是將 smoothing 參數設定為 true;而右邊的影像則是設定為 false

兩個影像:左邊是平滑化的影像,右邊是未平滑化的影像。

在將 smoothing 設定為 true 的情況下,繪製點陣圖的時間會較將 smoothing 設定為 false 所花的繪製時間長。


擲回值
ArgumentError source 參數不是一個 BitmapData 或 DisplayObject 物件。
 
SecurityError source 物件及其所有子物件 (在 Sprite 或 MovieClip 物件的情況下) 不是來自與呼叫者相同的網域,也不是位於呼叫者可存取的內容中 (藉由呼叫 Security.allowDomain() 方法進行存取)。應用程式安全執行程序中的 AIR 內容不受此限制。
 
ArgumentError — 來源若不是 null,就是無效的 IBitmapDrawable 物件。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明如何在 BitmapData 物件上繪製 TextField 物件:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var tf:TextField = new TextField();
tf.text = "bitmap text";

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.draw(tf);
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);

drawWithQuality

()方法 
public function drawWithQuality(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false, quality:String = null):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 11.3, AIR 3.3

使用 Flash 執行階期的向量描繪器,在點陣圖影像上繪製 source 顯示物件。您可以指定 matrixcolorTransformblendMode,以及目標 clipRect 參數來控制顯示的執行方式。 或者,您也可以指定是否在點陣圖縮放時平滑化處理 (只有當來源物件是 BitmapData 物件才能這麼處理)。

注意:drawWithQuality() 方法的運作方式與 draw() 方法完全相同,只是它不會使用 Stage.quality 屬性來決定向量顯示的品質,請將 quality 參數指定給 drawWithQuality() 方法。

這個方法會直接對應至編寫工具介面中使用物件標準向量描繪器來繪製物件的方式。

來源顯示物件並不會針對此呼叫使用所套用的任何變形。 會將它當做存在於元件庫或檔案中,而且不具有矩陣變形、顏色轉換和混合模式。 若要藉由使用顯示物件的轉換屬性來加以繪製 (例如繪製影片片段),可以將其 transform 屬性物件複製到使用 BitmapData 物件之 Bitmap 物件的 transform 屬性上。

Flash Player 9.0.115.0 和更新版本以及 Adobe AIR 透過 RTMP 支援此方法。您可以使用伺服器端指令碼控制 Flash Media Server 上串流的存取。如需詳細資訊,請參閱 Adobe Flash Media Server 伺服器端 ActionScript 語言參考中的 Client.audioSampleAccessClient.videoSampleAccess 屬性。

如果 source 物件及其所有子物件 (在 Sprite 或 MovieClip 物件的情況下) 不是來自與呼叫者相同的網域,也不是位於呼叫者可存取的內容中 (藉由呼叫 Security.allowDomain() 方法進行存取),呼叫 drawWithQuality() 會擲回 SecurityError 例外。應用程式安全執行程序中的 AIR 內容不受此限制。

使用載入的點陣圖影像當做 source 還存有一些限制。如果載入的影像與呼叫者來自相同網域,呼叫 drawWithQuality() 方法就會成功。再者,影像伺服器上的跨網域原則檔可能授與權限,允許 SWF 內容的網域呼叫 drawWithQuality() 方法。在此情況下,您必須設定 LoaderContext 物件的 checkPolicyFile 屬性,並且使用該物件做為 context 參數來呼叫 Loader 物件的 load() 方法以載入影像。應用程式安全執行程序中的 AIR 內容不受這些限制。

在 Windows 中,drawWithQuality() 方法無法捕捉內嵌於 Adobe AIR HTMLLoader 物件中 HTML 網頁的 SWF 內容。

drawWithQuality() 方法既無法捕捉 Adobe AIR 中的 PDF 內容,也無法捕捉 Adobe AIR 中內嵌於 wmode 特質設為 "window" 之 HTML 的 SWF 內容。

參數

source:IBitmapDrawable — 要繪製到 BitmapData 物件的顯示物件或 BitmapData 物件。(DisplayObject 與 BitmapData 類別會實作 IBitmapDrawable 介面)。
 
matrix:Matrix (default = null) — 用來縮放、旋轉或轉移點陣圖之座標的 Matrix 物件。 如果您不想將矩陣變形套用到影像上,請使用預設的 new Matrix() 建構函式,或傳遞 null 值,將此參數設為單位矩陣。
 
colorTransform:flash.geom:ColorTransform (default = null) — 用來調整點陣圖顏色值的 ColorTransform 物件。 如果沒有提供物件,點陣圖影像的顏色就不會變化。 如果您必須傳遞此參數,但又不想轉換影像,請將此參數設為以預設 new ColorTransform() 建構函式建立的 ColorTransform 物件。
 
blendMode:String (default = null) — 來自 flash.display.BlendMode 類別的字串值,可指定要套用至結果點陣圖的混合模式。
 
clipRect:Rectangle (default = null) — 用來定義要繪製的來源物件區域之 Rectangle 物件。 如果您沒有提供此值,就不會產生剪裁效果,並且會繪製整個來源物件。
 
smoothing:Boolean (default = false) — Boolean 值,決定因 matrix 參數中指定的縮放或旋轉而縮放或旋轉 BitmapData 物件時是否要進行平滑化處理。只有當 source 參數是 BitmapData 物件的情況下,才能套用 smoothing 參數。將 smoothing 設定為 false 時,旋轉或縮放的 BitmapData 影像會呈現像素化或鋸齒狀。 例如,下列兩個影像都會使用相同的 BitmapData 物件做為 source 參數,但是左邊的影像是將 smoothing 參數設定為 true;而右邊的影像則是設定為 false

兩個影像:左邊是平滑化的影像,右邊是未平滑化的影像。

在將 smoothing 設定為 true 的情況下,繪製點陣圖的時間會較將 smoothing 設定為 false 所花的繪製時間長。

 
quality:String (default = null) — 任一 StageQuality 值。選取繪製向量圖形時要使用的消除鋸齒品質。


擲回值
ArgumentError source 參數不是一個 BitmapData 或 DisplayObject 物件。
 
SecurityError source 物件及其所有子物件 (在 Sprite 或 MovieClip 物件的情況下) 不是來自與呼叫者相同的網域,也不是位於呼叫者可存取的內容中 (藉由呼叫 Security.allowDomain() 方法進行存取)。應用程式安全執行程序中的 AIR 內容不受此限制。
 
ArgumentError — 來源若不是 null,就是無效的 IBitmapDrawable 物件。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明如何在 BitmapData 物件上繪製 TextField 物件:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.text.TextField;

var tf:TextField = new TextField();
tf.text = "bitmap text";

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.drawWithQuality(tf, , , , , , StageQuality.LOW);
var bmp:Bitmap = new Bitmap(myBitmapData);
this.addChild(bmp);

encode

()方法 
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray

語言版本: ActionScript 3.0
執行階段版本: Flash Player 11.3, AIR 3.3

使用選取的壓縮程式演算法壓縮這個 BitmapData 物件,並傳回新的 ByteArray 物件。或者,將產生的資料寫入指定的 ByteArray。compressor 引數會指定編碼演算法,並且可以是 PNGEncoderOptions、JPEGEncoderOptions 或 JPEGXREncoderOptions。

下列範例使用 JPEGEncoderOptions 壓縮 BitmapData 物件:

     // Compress a BitmapData object as a JPEG file.
     var bitmapData:BitmapData = new BitmapData(640,480,false,0x00FF00);
     var byteArray:ByteArray = new ByteArray();
     bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray); 

參數

rect:Rectangle — 要壓縮的 BitmapData 物件區域。
 
compressor:Object — 要使用的壓縮程式類型。有效值為 flash.display.PNGEncoderOptionsflash.display.JPEGEncoderOptionsflash.display.JPEGXREncoderOptions
 
byteArray:ByteArray (default = null) — 要保留編碼影像的輸出 ByteArray。

傳回值
ByteArray — 包含編碼影像的 ByteArray。

相關 API 元素

fillRect

()方法 
public function fillRect(rect:Rectangle, color:uint):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

以指定的 ARGB 顏色對像素的矩形區域填色。

參數

rect:Rectangle — 要填色的矩形區域。
 
color:uint — 填滿區域的 ARGB 顏色值。 ARGB 顏色一般會以十六進位格式來指定,例如 0xFF336699。


擲回值
TypeError — rect 為 null。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例將說明如何在 BitmapData 物件的矩形區域上填滿藍色:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x0000FF);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);

floodFill

()方法 
public function floodFill(x:int, y:int, color:uint):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

對於從 (x, y) 座標開始的影像,執行填色作業,並填入特定顏色。 floodFill() 方法和多種繪圖程式裡的油漆桶工具類似。 顏色為 ARGB 顏色,其中包含 Alpha 資訊和顏色資訊。

參數

x:int — 影像的 x 座標。
 
y:int — 影像的 y 座標。
 
color:uint — 當做填色使用的 ARGB 顏色。


範例  ( 如何使用本範例 )

下列範例將示範如何以顏色填滿 BitmapData 物件的某個區域,也就是圍繞 (10, 10) 點所定義之像素,而且其中所有顏色都符合該點之顏色的區域。
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00);

var rect:Rectangle = new Rectangle(0, 0, 20, 20);
myBitmapData.fillRect(rect, 0x000000FF);
rect = new Rectangle(15, 15, 25, 25);
myBitmapData.fillRect(rect, 0x000000FF);

myBitmapData.floodFill(10, 10, 0x00FF0000);

var bm:Bitmap = new Bitmap(myBitmapData);
addChild(bm);

generateFilterRect

()方法 
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

指定 BitmapData 物件、來源矩形以及濾鏡物件,來決定 applyFilter() 方法呼叫所影響的目標矩形。

例如,模糊濾鏡通常會影響大於來源影像大小的區域。 由預設 BlurFilter 實體所篩選的 100 x 200 像素影像,其中 blurX = blurY = 4 會產生 (-2,-2,104,204) 的目標矩形。 generateFilterRect() 方法可讓您預先找出此目標矩形的大小,因此您可以在執行濾鏡操作前適當調整目標影像的大小。

有些濾鏡會依據來源影像大小來裁切其目標矩形。 例如,內部 DropShadow 不會產生大於來源影像的結果。 在此 API 中,BitmapData 物件是當做來源邊界來使用,而不是來源 rect 參數。

參數

sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
filter:BitmapFilter — 用來計算目標矩形的濾鏡物件。

傳回值
Rectangle — 使用影像、sourceRect 參數和濾鏡來計算的目標矩形。

擲回值
TypeError — sourceRect 或 filter 都是 null。

範例  ( 如何使用本範例 )

下列範例將說明您如何能使用 generateFilterRect() 方法,決定模糊濾鏡的結果將佔用的矩形區域。 generateFilterRect() 方法的結果會透過 trace() 函數來輸出:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.filters.BlurFilter;

var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bmd.fillRect(rect, 0xFF0000);

var pt:Point = new Point(10, 10);
var filter:BlurFilter = new BlurFilter();

trace(bmd.generateFilterRect(rect, filter));
// (x=8, y=8, w=44, h=14)

bmd.applyFilter(bmd, rect, pt, filter);
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
請注意,generateFilterRect() 方法無法套用這個濾鏡。 呼叫 applyFilter() 方法來套用該濾鏡。

getColorBoundsRect

()方法 
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

決定矩形區域,將位於點陣圖影像內所有指定顏色的像素全部封閉起來 (如果 findColor 參數設為 true),或者將不包含指定顏色的所有像素封閉起來 (如果 findColor 參數設為 false)。

例如,如果您有一個來源影像,而且想要決定包含非零 Alpha 色版的影像矩形,請傳遞 {mask: 0xFF000000, color: 0x00000000} 做為參數。 如果 findColor 參數設為 true,則會搜尋整個影像,以找出 (value & mask) == color 的像素邊界 (其中 value 是指像素的顏色值)。 如果 findColor 參數設為 false,則會搜尋整個影像,以找出 (value & mask) ! 的像素邊界= color 的像素邊界 (其中 value 是指像素的顏色值)。 若要決定影像周圍的空白,請傳遞 {mask: 0xFFFFFFFF, color: 0xFFFFFFFF} 以尋找非白色像素的邊界。

參數

mask:uint — 十六進位值,指定要考量的 ARGB 顏色的位元。 該顏色值是使用 & (位元 AND) 運算子,與此十六進位值相結合。
 
color:uint — 十六進位值,用來指定要符合 (當 findColor 設為 true) 或「不」要符合 (當 findColor 設為 false 的 ARGB 顏色)。
 
findColor:Boolean (default = true) — 如果值設定為 true,則傳回影像的顏色值邊界。 如果值設定為 false,則傳回影像中不存在此顏色的邊界。

傳回值
Rectangle — 指定顏色的影像區域。

範例  ( 如何使用本範例 )

下列範例會建立 BitmapData 物件,並在其像素上半部填滿紅色。 接著,它會呼叫 getColorBoundsRect() 方法來決定其中像素為紅色 (0xFF0000) 的矩形,然後再呼叫相同的方法,決定其中像素不是紅色的矩形 (藉由將 findColor 參數設為 false
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF);
var rect:Rectangle = new Rectangle(0, 0, 80, 20);
bmd.fillRect(rect, 0xFF0000);

var maskColor:uint = 0xFFFFFF; 
var color:uint = 0xFF0000;  
var redBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);
trace(redBounds); // (x=0, y=0, w=80, h=20)

var notRedBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, false);
trace(notRedBounds); // (x=0, y=20, w=80, h=20)

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

getPixel

()方法 
public function getPixel(x:int, y:int):uint

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

傳回整數,代表在特定點 (x, y) 上 BitmapData 物件的 RGB 像素值。 getPixel() 方法會傳回未相乘的像素值。 不會傳回任何 Alpha 資訊。

BitmapData 物件裡的所有像素都會當作預先相乘的顏色值來儲存。 預先相乘的影像像素具有已和 Alpha 資料相乘的紅、綠和藍的顏色色版值。 例如,如果 Alpha 值為 0,則 RGB 色版的值也為 0,與未相乘的值無關。 這種資料遺失狀況可能導致執行操作時的一些問題。 所有的 BitmapData 方法都會採用並傳回未相乘的值。 內部像素形式在傳回數值之前會從預先相乘轉換為未相乘。 在集合操作中,像素值會在設定原始影像像素前會預先相乘。

參數

x:int — 像素的 x 位置。
 
y:int — 像素的 y 位置。

傳回值
uint — 代表 RGB 像素值的數字。 如果 (x, y) 座標位於影像的邊界外,則此方法會傳回 0。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會建立填滿紅色的 BitmapData 物件,然後使用 getPixel() 方法來決定左上角像素的顏色值:
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000);

var pixelValue:uint = bmd.getPixel(0, 0);
trace(pixelValue.toString(16)); // ff0000;

getPixel32

()方法 
public function getPixel32(x:int, y:int):uint

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

傳回 ARGB 顏色數值,其中包含 Alpha 色版資料和 RGB 資料。 此方法和 getPixel() 方法類似,都會傳回不具 Alpha 色版資料的 RGB 顏色。

BitmapData 物件裡的所有像素都會當作預先相乘的顏色值來儲存。 預先相乘的影像像素具有已和 Alpha 資料相乘的紅、綠和藍的顏色色版值。 例如,如果 Alpha 值為 0,則 RGB 色版的值也為 0,與未相乘的值無關。 這種資料遺失狀況可能導致執行操作時的一些問題。 所有的 BitmapData 方法都會採用並傳回未相乘的值。 內部像素形式在傳回數值之前會從預先相乘轉換為未相乘。 在集合操作中,像素值會在設定原始影像像素前會預先相乘。

參數

x:int — 像素的 x 位置。
 
y:int — 像素的 y 位置。

傳回值
uint — 代表 ARGB 像素值的數字。 如果 (x, y) 座標位於影像的邊界外,則會傳回 0。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會建立填滿某種顏色的 BitmapData 物件,然後使用 getPixel32() 方法來決定左上角像素的顏色值,接著再決定每個顏色組件 (Alpha、紅色、綠色與藍色) 的十六進位值:
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC);

var pixelValue:uint = bmd.getPixel32(0, 0);
var alphaValue:uint = pixelValue >> 24 & 0xFF;
var red:uint = pixelValue >> 16 & 0xFF;
var green:uint = pixelValue >> 8 & 0xFF;
var blue:uint = pixelValue & 0xFF;

trace(alphaValue.toString(16)); // ff
trace(red.toString(16)); // 44
trace(green.toString(16)); // aa
trace(blue.toString(16)); // cc

getPixels

()方法 
public function getPixels(rect:Rectangle):ByteArray

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

從像素資料的矩形區域產生位元組陣列。 將每個像素的無正負號整數 (32 位元未相乘的像素值) 寫入位元組陣列中。

參數

rect:Rectangle — 位於目前 BitmapData 物件的矩形區域。

傳回值
ByteArray — ByteArray,代表指定之矩形中的像素。

擲回值
TypeError — rect 為 null。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會建立填滿隨機雜點像素的 BitmapData 物件,然後使用 getPixels()方法在 ByteArray 物件中填入 BitmapData 物件的像素值。
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

var bmd:BitmapData = new BitmapData(80, 40, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);

var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);

getVector

()方法 
public function getVector(rect:Rectangle):Vector.<uint>

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5, Flash Lite 4

從矩形區域的像素資料產生向量陣列。傳回指定矩形的無正負號整數 (32 位元未相乘的像素值) Vector 物件。

參數

rect:Rectangle — 位於目前 BitmapData 物件的矩形區域。

傳回值
Vector.<uint> — 代表指定矩形的 Vector。

擲回值
TypeError — rect 為 null。

histogram

()方法 
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5, Flash Lite 4

計算 BitmapData 物件的 256 色二進位長條圖。這個方法會傳回包含 4 個 Vector 的 Vector 物件。<Number> 實體 (4 個包含 Number 物件的 Vector 物件)。這 4 個 Vector 實體依序代表紅色、綠色、藍色和 Alpha 組件。每個 Vector 實體都包含 256 個值,分別代表個別組件值的填入次數 (從 0 至 255)。

參數

hRect:Rectangle (default = null) — BitmapData 物件要使用的區域。

傳回值
Vector.<Vector.<Number>>

hitTest

()方法 
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

在一個點陣圖影像和一個點、矩形或其它點陣圖影像之間,執行像素層級作用區域偵測。 碰撞定義為某個點或矩形在一個不透明像素上重疊,或兩個重疊的不透明像素。在執行碰撞測試時,不會考慮任一個物件的延伸、旋轉或其它變化。

如果影像是不透明影像,則此方法會將其視為完全不透明的矩形。 若要執行考量透明度的像素層級碰撞測試,兩個影像必須都為透明影像。 當您在測試兩個透明影像時,會將控制 Alpha 色版值 (從 0 到 255) 的 Alpha 臨界值參數視為不透明。

參數

firstPoint:Point — 在任意座標空間裡,BitmapData 影像的左上角位置。 相同的座標空間會用在 secondBitmapPoint 參數上。
 
firstAlphaThreshold:uint — 此碰撞測試中被視為不透明的最小 Alpha 色版值。
 
secondObject:Object — Rectangle、Point、Bitmap 或 BitmapData 物件。
 
secondBitmapDataPoint:Point (default = null) — 用來定義第二個 BitmapData 物件之像素位置的點。 僅在 secondObject 的值為 BitmapData 物件時才使用此參數。
 
secondAlphaThreshold:uint (default = 1) — 在第二個 BitmapData 物件中被視為不透明的最小 Alpha 色版值。僅在 secondObject 的值為 BitmapData 物件,且兩個 BitmapData 物件都為透明時才使用此參數。

傳回值
Boolean — 如果作用區域有感應,則為 true 值,否則為 false

擲回值
ArgumentError secondObject 參數不是一個 Point、Rectangle、Bitmap,或 BitmapData 物件。
 
TypeError — firstPoint 為 null。

範例  ( 如何使用本範例 )

下列範例會建立 BitmapData 物件,此物件只有在矩形區域 (20, 20, 40, 40) 中會不透明,並呼叫 hitTest() 方法 (將 Point 物件當做 secondObject)。 在第一次呼叫中,Point 物件會定義 BitmapData 物件的左上角 (此處為透明);而在第二次呼叫中,Point 物件會定義 BitmapData 物件的中心處 (此處為不透明)。
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000);
var rect:Rectangle = new Rectangle(20, 20, 40, 40);
bmd1.fillRect(rect, 0xFF0000FF);

var pt1:Point = new Point(1, 1);
trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false
var pt2:Point = new Point(40, 40);
trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true

lock

()方法 
public function lock():void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

鎖定影像,以便當這個 BitmapData 物件變更時,其它參照此 BitmapData 物件 (例如 Bitmap 物件) 的任何物件不會跟著更新。 若要改善效能,請在您多次呼叫 setPixel()setPixel32() 方法之前與之後,搭配使用這方法與 unlock() 方法。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會根據 Bitmap 物件 picturebitmapData 屬性來建立 BitmapData 物件。 接著,它會先呼叫 lock() 方法,再呼叫複雜的自訂函數 complexTransformation(),這個自訂函數會修改 BitmapData 物件。 (picture 物件和 complexTransformation() 函數都尚未在此範例中定義)。 即使 complexTransformation() 函數更新了 picture 物件的 bitmapData 屬性,變更會一直等到程式碼呼叫 bitmapData 物件上的 unlock() 方法:
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;

merge

()方法 
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

執行從來源影像到目標影像的每個色版的混合。 程式會根據來源和目標像素的色版值,為每個色版和每個像素計算新值。 例如,在紅色色版中,新值的計算方式如下 (其中 redSrc 是來源影像中像素的紅色色版值,而 redDest 則是目標影像中對應像素的紅色色版值):

new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;

redMultipliergreenMultiplierblueMultiplieralphaMultiplier 值都是每個顏色色版的倍數。 請使用介於 00x100 (256) 之間的十六進位值,其中 0 指定在結果中使用來自目標的完整數值,0x100 指定使用來自來源的完整數值,中間的數字則指定使用混合 (例如 0x80 代表 50%)。

參數

sourceBitmapData:BitmapData — 要使用的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 物件,或者參照到目前的 BitmapData 物件。
 
sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
destPoint:Point — 目標影像 (目前 BitmapData 實體) 內對應至來源矩形左上角的點。
 
redMultiplier:uint — 十六進位 uint 值,用來與紅色色版值相乘。
 
greenMultiplier:uint — 十六進位 uint 值,用來與綠色色版值相乘。
 
blueMultiplier:uint — 十六進位 uint 值,用來與藍色色版值相乘。
 
alphaMultiplier:uint — 十六進位 uint 值,用來與 Alpha 透明度值相乘。


擲回值
TypeError — sourceBitmapData、sourceRect 或 destPoint 都是 null。

範例  ( 如何使用本範例 )

下列範例會建立兩個 BitmapData 物件。 這兩個物件都是 100 x 80 的像素大小。 第一個物件會填滿為綠色,而第二個物件則會填滿為紅色。 程式碼會呼叫 merge() 方法,將第二個 BitmapData 像素合併至第一個 BitmapData 物件中,但僅限於指定的矩形區域:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00);
var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000);
var rect:Rectangle = new Rectangle(0, 0, 20, 20);
var pt:Point = new Point(20, 20);
var mult:uint = 0x80; // 50% 
bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;

noise

()方法 
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

以呈現隨機雜點的像素來填色影像。

參數

randomSeed:int — 要使用的隨機種子數字。 如果您保持其它所有參數不變,就可以變化隨機種子值來產生不同的虛擬亂數結果。 雜點函數是一種對應函數,而不是真正的隨機數字產生函數,因此它每次都會從相同的隨機種子產生相同的結果。
 
low:uint (default = 0) — 每個色版所能產生的最低值 (0 到 255)。
 
high:uint (default = 255) — 每個色版所能產生的最高值 (0 到 255)。
 
channelOptions:uint (default = 7) — 可以是下列四個顏色色版之任何值組合的數字 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.ALPHA)。 您可以使用邏輯 OR 運算子 | 來合併色版值。
 
grayScale:Boolean (default = false) — Boolean 值。 如果值為 true,則會將所有顏色色版設為相同值以建立灰階影像。 將此參數設為 true 不會影響所選取的 Alpha 色版。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會建立兩個 BitmapData 物件,並針對這兩個物件呼叫 noise() 方法。 不過,您需要將該 grayscale 參數設定為 false 以便呼叫第一個物件的 noise() 方法,而設定為 true 以便呼叫第二個物件的 noise() 方法:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;

var bmd1:BitmapData = new BitmapData(80, 80);
var bmd2:BitmapData = new BitmapData(80, 80);

var seed:int = int(Math.random() * int.MAX_VALUE);
bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false);
bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true);

var bm1:Bitmap = new Bitmap(bmd1);
this.addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
this.addChild(bm2);
bm2.x = 90;

paletteMap

()方法 
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

重新對應影像 (最多具有四個顏色面板資料陣列) 中的顏色色版值,每個顏色色版值對應一個色版。

Flash 執行階段會使用下列步驟來產生結果影像:

  1. 在計算了紅、綠、藍和 Alpha 值之後,就會使用標準 32 位元整數數值將這些值加總起來。
  2. 每個像素的紅、綠、藍和 Alpha 色版值會擷取至個別 0 至 255 的值。 這些值會用來查詢適當陣列中的新顏色值:redArraygreenArrayblueArrayalphaArray。 這四個陣列中的每一個都應該包含 256 個值。
  3. 在全部擷取完這四種新色版值之後,會將這些值結合成標準的 ARGB 值以套用至像素中。

此方法可以支援跨色版特效。 每個輸入陣列可以包含完整的 32 位元值,而且當這些值加總在一起時不會進位。 這個程序不支援每個色版的固定。

如果沒有為色版指定陣列,則僅會將顏色色版從來源影像複製到目標影像。

您可以使用這個方法產生各種不同的特效,如一般面板對應 (使用一個色版並將它轉換為 false 顏色影像)。 您也可以使用此方法來進行各種進階色彩操作演算法,如 Gamma、曲線、色階和量子化。

參數

sourceBitmapData:BitmapData — 要使用的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 物件,或者參照到目前的 BitmapData 實體。
 
sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
destPoint:Point — 目標影像 (目前 BitmapData 物件) 內對應至來源矩形左上角的點。
 
redArray:Array (default = null) — 如果 redArray 不是 null,則 red = redArray[source red value] else red = source rect value
 
greenArray:Array (default = null) — 如果 greenArray 不是 null,則 green = greenArray[source green value] else green = source green value.
 
blueArray:Array (default = null) — 如果 blueArray 不是 null,則 blue = blueArray[source blue value] else blue = source blue value
 
alphaArray:Array (default = null) — 如果 alphaArray 不是 null,則 alpha = alphaArray[source alpha value] else alpha = source alpha value


擲回值
TypeError — sourceBitmapData、sourceRect 或 destPoint 都是 null。

範例  ( 如何使用本範例 )

下列範例會建立綠色的 BitmapData 物件,該物件的正中央有個紅色方形,然後再使用 paletteMap() 方法,將 BitmapData 物件下半部矩形中的紅色替換為綠色:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);

var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);

for(var i:uint = 0; i < 255; i++) {
    redArray[i] = 0x00000000;
    greenArray[i] = 0x00000000;
}

redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;

var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);

var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);

perlinNoise

()方法 
public function perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

產生 Perlin 雜點影像。

Perlin 雜點產生演算法會插入並結合個別的隨機雜點函數 (稱為 octave) 為單一函數,以產生看起來更自然的隨機雜點。 就像音樂的八度音一樣,每個 octave 函數是前一個函數頻率的兩倍。 Perlin 雜點被描述為「雜點的不規則總和」,因為它結合了多組雜點資料和不同層級的細節。

Perlin 雜點函數可以用來模擬自然現象和山水風情,如木紋、雲朵和山脈。 在大部分情況下,Perlin 雜點函數的輸出並不會直接顯示出來,而是用來加強其它影像與賦予這些影像虛擬亂數的變化。

簡單的數位隨機雜點函數通常會產生具有粗大對比粒子的影像。 這樣的粗大對比在自然界是找不到的。 Perlin 雜點演算法會混合多個運作不同層級細節的雜點函數。 此演算法會讓相鄰像素值有較平滑的變化結果。

參數

baseX:Number — 用在 x 方向的頻率。 例如,若要產生大小為 64 x 128 影像的雜點,需要傳遞的 baseX 值為 64。
 
baseY:Number — 用在y 方向的頻率。 例如,若要產生大小為 64 x 128 影像的雜點,需要傳遞的 baseY 值為 128。
 
numOctaves:uint — 建立此雜點所需結合的 octave 或是個別的雜點函數數量。 更多的 octave 會產生細節更豐富的影像。 更多的 octave 同時需要更長的處理時間。
 
randomSeed:int — 要使用的隨機種子數字。 如果您保持其它所有參數不變,就可以變化隨機種子值來產生不同的虛擬亂數結果。 Perlin 雜點函數是一種對應函數,而不是真正的隨機數字產生函數,因此它每次都會從相同的隨機種子產生相同的結果。
 
stitch:Boolean — Boolean 值。 如果值為 true,則方法會嘗試平滑化處理影像的轉換邊緣,以建立無接縫的拼貼底紋做為點陣圖填色。
 
fractalNoise:Boolean — Boolean 值。 如果值為 true,則方法會產生不規則雜點;否則會產生亂流。 帶有亂流的影像具有明顯不連續的漸層,可讓它產生較逼近、鮮明的視覺效果,例如火焰和海浪。
 
channelOptions:uint (default = 7) — 可以是下列四個顏色色版之任何值組合的數字 (BitmapDataChannel.REDBitmapDataChannel.BLUEBitmapDataChannel.GREENBitmapDataChannel.ALPHA)。 您可以使用邏輯 OR 運算子 | 來合併色版值。
 
grayScale:Boolean (default = false) — Boolean 值。 如果值為 true,則會將每個紅色、綠色和藍色的顏色色版設為相同值以建立灰階影像。 如果將此值設定為 true,將不會影響 Alpha 色版值。
 
offsets:Array (default = null) — 對應至每個 octave 之 xy 偏移的點陣列。 藉由操作偏移值,您可以平滑地捲動 perlinNoise 影像的圖層。 在偏移陣列中的每個點會影響特定的 octave 雜點函數。


範例  ( 如何使用本範例 )

下列範例將建立一個 200 x 200 像素的 BitmapData 物件,並呼叫 perlinNoise() 方法來產生紅色與藍色水彩效果:
import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC);

var seed:Number = Math.floor(Math.random() * 10);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null);

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

pixelDissolve

()方法 
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

執行從來源影像至目標影像,或使用相同影像的像素溶解效果。 Flash 執行階段會使用 randomSeed 值來產生隨機像素溶解效果。函數的傳回值必須傳遞至後續的呼叫中,以持續進行像素溶解效果直到完成為止。

如果來源影像不等於目標影像,就會使用所有的屬性將像素由來源複製到目標。 這樣一來,就可讓空白影像經過溶解處理而產生一張完全填滿的影像。

如果來源影像等於目標影像,則會以 color 參數對像素進行填色。 這樣一來,將會溶解為非完全填滿的影像。 在這種模式中,會忽略目標 point 參數。

參數

sourceBitmapData:BitmapData — 要使用的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 物件,或者參照到目前的 BitmapData 實體。
 
sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
destPoint:Point — 目標影像 (目前 BitmapData 實體) 內對應至來源矩形左上角的點。
 
randomSeed:int (default = 0) — 用來開始像素溶解效果的隨機種子。
 
numPixels:int (default = 0) — 預設值為來源區域的 1/30 (寬度 x 高度)。
 
fillColor:uint (default = 0) — 使用 ARGB 顏色值對來源值等於目標值的像素進行填色。

傳回值
int — 在後續的呼叫所使用的新隨機種子值。

擲回值
TypeError — sourceBitmapData、sourceRect 或 destPoint 都是 null。
 
TypeError — numPixels 值為負值。

範例  ( 如何使用本範例 )

下列範例使用 pixelDissolve() 方法將一個灰色 BitmapData 物件轉換成紅色的,一次會溶解 40 個像素直到所有像素都變更顏色為止:
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;

var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var bitmap:Bitmap = new Bitmap(bmd);
addChild(bitmap);

var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);
 
function timerHandler(event:TimerEvent):void {
    var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
    dissolve(randomNum);
}

function dissolve(randomNum:Number):void {
    var rect:Rectangle = bmd.rect;
    var pt:Point = new Point(0, 0);
    var numberOfPixels:uint = 100;
    var red:uint = 0x00FF0000;
    bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
    var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
    if(grayRegion.width == 0 && grayRegion.height == 0 ) {
        tim.stop();
    }
}

scroll

()方法 
public function scroll(x:int, y:int):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

以一定的 (x, y) 像素量來捲動影像。 捲動區域外圍的邊緣區域維持不變。

參數

x:int — 水平捲動的量。
 
y:int — 垂直捲動的量。


範例  ( 如何使用本範例 )

下列範例將說明捲動右側 40 像素位置之 Bitmap 資料物件的效果:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
var rect:Rectangle = new Rectangle(0, 0, 40, 40);
bmd.fillRect(rect, 0xFFFF0000);
            
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

trace (bmd.getPixel32(50, 20).toString(16)); // ffcccccccc

bmd.scroll(30, 0); 

trace (bmd.getPixel32(50, 20).toString(16)); // ffff0000

setPixel

()方法 
public function setPixel(x:int, y:int, color:uint):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

設定 BitmapData 物件的單一像素。 目前的影像像素 Alpha 色版值會在此作業期間保留下來。 RGB 顏色參數值會被視為未相乘的顏色值。

注意:為了提升效能,當您重複使用 setPixel()setPixel32() 方法時,請先呼叫 lock() 方法,再呼叫 setPixel()setPixel32() 方法,然後在完成所有像素變更之後呼叫 unlock() 方法。 這個程序可預防參照此 BitmapData 實體的物件,在您尚未完成像素變更之前提早進行更新。

參數

x:int — 數值會變更的像素 x 位置。
 
y:int — 數值會變更的像素 y 位置。
 
color:uint — 像素的最後 RGB 顏色。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例使用 setPixel()方法,在 BitmapData 物件中繪製一條紅色線段:
import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0xFF0000;
    bmd.setPixel(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

setPixel32

()方法 
public function setPixel32(x:int, y:int, color:uint):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

設定 BitmapData 物件單一像素的顏色和 Alpha 透明度值。 此方法近似於 setPixel() 方法;最大的不同在於 setPixel32() 方法採用了包含 Alpha 色版資訊的 ARGB 顏色值。

BitmapData 物件裡的所有像素都會當作預先相乘的顏色值來儲存。 預先相乘的影像像素具有已和 Alpha 資料相乘的紅、綠和藍的顏色色版值。 例如,如果 Alpha 值為 0,則 RGB 色版的值也為 0,與未相乘的值無關。 這種資料遺失狀況可能導致執行操作時的一些問題。 所有的 BitmapData 方法都會採用並傳回未相乘的值。 內部像素形式在傳回數值之前會從預先相乘轉換為未相乘。 在集合操作中,像素值會在設定原始影像像素前會預先相乘。

注意:為了提升效能,當您重複使用 setPixel()setPixel32() 方法時,請先呼叫 lock() 方法,再呼叫 setPixel()setPixel32() 方法,然後在完成所有像素變更之後呼叫 unlock() 方法。 這個程序可預防參照此 BitmapData 實體的物件,在您尚未完成像素變更之前提早進行更新。

參數

x:int — 數值會變更的像素 x 位置。
 
y:int — 數值會變更的像素 y 位置。
 
color:uint — 像素的最後 ARGB 顏色。 如果點陣圖不透明,則會忽略此顏色值的 Alpha 透明度部分。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例使用 setPixel32() 方法,在 BitmapData 物件中繪製一條透明 (Alpha == 0x60) 紅色線段:
import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);

for (var i:uint = 0; i < 80; i++) {
    var red:uint = 0x60FF0000;
    bmd.setPixel32(i, 40, red);
}

var bm:Bitmap = new Bitmap(bmd);
addChild(bm);

setPixels

()方法 
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0, Flash Lite 4

將位元組陣列轉換為像素資料的矩形區域。 對於每個像素,會呼叫 ByteArray.readUnsignedInt() 方法,並將傳回值寫入像素中。 如果位元組陣列在寫入完整的矩形之前就結束,就會傳回函數。 位元組陣列中的資料預期將為 32 位元 ARGB 像素值。 無論像素是否讀取,都不會在位元組陣列上執行搜尋。

參數

rect:Rectangle — 指定 BitmapData 物件的矩形區域。
 
inputByteArray:ByteArray — ByteArray 物件,包含了 32 位元未相乘像素值,可用在矩形區域中。


擲回值
EOFError inputByteArray 物件並未包含足夠的資料來填滿 rect 矩形區域。 此方法在擲回例外之前,會儘可能地對更多的像素填色。
 
TypeError — rect 或 inputByteArray 都是 null。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例使用 getPixels()setPixels() 方法,將某個 BitmapData 物件的像素複製到另一個物件:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC);
var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000);

var rect:Rectangle = new Rectangle(0, 0, 100, 100);
var bytes:ByteArray = bmd1.getPixels(rect);

bytes.position = 0;
bmd2.setPixels(rect, bytes);

var bm1:Bitmap = new Bitmap(bmd1);
addChild(bm1);
var bm2:Bitmap = new Bitmap(bmd2);
addChild(bm2);
bm2.x = 110;

setVector

()方法 
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10, AIR 1.5, Flash Lite 4

將向量轉換為像素資料的矩形區域。對於每一個象素,讀取 Vector 元素並寫入 BitmapData 像素。Vector 中的資料預期將為 32 位元 ARGB 像素值。

參數

rect:Rectangle — 指定 BitmapData 物件的矩形區域。
 
inputVector:Vector.<uint> — Vector 物件,包含了 32 位元未相乘像素值,可用在矩形區域中。


擲回值
RangeError — 向量陣列不夠大,無法讀取所有像素資料。

threshold

()方法 
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

根據指定的臨界值來測試影像的像素值,並設定將測試傳遞至新顏色值的像素。 使用 threshold() 方法,您可以獨立和取代影像的顏色範圍,並在影像像素上執行其它邏輯運算。

threshold() 方法的測試邏輯如下所示:

  1. 如果 ((pixelValue & mask) operation (threshold & mask)),則將像素設為 color
  2. 否則,如果為 copySource == true,則將像素設為來自 sourceBitmap 的對應像素值。

operation 參數會指定用於臨界值測試的比較運算子。 例如,您可以將 "==" 當作 operation 參數來使用,將影像中的特定顏色值獨立出來。 或使用 {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000},在來源影像像素的 Alpha 值小於 0x7F 時,將所有目標像素設定為完全透明。 您可以將這個技巧用於動畫般的轉換和其它特效。

參數

sourceBitmapData:BitmapData — 要使用的輸入點陣圖影像。 來源影像可以是不一樣的 BitmapData 物件,或者參照到目前的 BitmapData 實體。
 
sourceRect:Rectangle — 定義要用來做為輸入的來源影像區域之矩形。
 
destPoint:Point — 目標影像 (目前 BitmapData 實體) 內對應至來源矩形左上角的點。
 
operation:String — 將下列其中一個比較運算子當做「字串」傳遞: "<", "<=", ">", ">=", "==", "!="
 
threshold:uint — 用來測試每個像素的數值,以檢視是否符合或超過臨界值。
 
color:uint (default = 0) — 如果臨界值測試成功,所設定的像素顏色值。 預設值為 0x00000000。
 
mask:uint (default = 0xFFFFFFFF) — 用來將顏色組件獨立出來的遮色片。
 
copySource:Boolean (default = false) — 如果值為 true,當臨界值測試失敗時,來源影像的像素值會複製到目標。 如果值為 false,當臨界值測試失敗時將不會複製來源影像。

傳回值
uint — 變更的像素數目。

擲回值
TypeError — sourceBitmapData、sourceRect、destPoint,或 operation 都是 null。
 
ArgumentError — 操作字串不是有效的操作。

範例  ( 如何使用本範例 )

下列範例使用 perlinNoise() 方法,將藍色與紅色圖樣加入至 BitmapData 物件中,接著使用 threshold() 方法,將這些像素從第一個 BitmapData 物件複製到第二個物件,並在像素設定為透明紅色 (0x20FF0000) 的情況下,取代其中紅色值大於 0x80 (50%) 的像素:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BitmapDataChannel;
import flash.geom.Point;
import flash.geom.Rectangle;

var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);

var seed:int = int(Math.random() * int.MAX_VALUE);
var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE;
bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null);

var bitmap1:Bitmap = new Bitmap(bmd1);
addChild(bitmap1);

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00800000; 
var color:uint = 0x20FF0000;
var maskColor:uint = 0x00FF0000;
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

var bitmap2:Bitmap = new Bitmap(bmd2);
bitmap2.x = bitmap1.x + bitmap1.width + 10;
addChild(bitmap2);

unlock

()方法 
public function unlock(changeRect:Rectangle = null):void

語言版本: ActionScript 3.0
執行階段版本: Flash Player 9, AIR 1.0

解除鎖定影像,以便當這個 BitmapData 物件變更時,其它參照此 BitmapData 物件 (例如 Bitmap 物件) 的任何物件不會跟著更新。 若要改善效能,請在您多次呼叫 setPixel()setPixel32() 方法之前與之後,搭配使用這方法與 lock() 方法。

參數

changeRect:Rectangle (default = null) — 已經變更的 BitmapData 物件區域。 如果您沒有為這個參數指定一個值,則會將整個 BitmapData 物件區域視為已變更。這個參數需要 Flash Player 9.0.115.0 版或更新版本。

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會根據 Bitmap 物件 picturebitmapData 屬性來建立 BitmapData 物件。 接著,它會先呼叫 lock() 方法,再呼叫複雜的自訂函數 complexTransformation(),這個自訂函數會修改 BitmapData 物件。 (picture 物件和 complexTransformation() 函數都尚未在此範例中定義)。 即使 complexTransformation() 函數更新了 picture 物件的 bitmapData 屬性,變更會一直等到程式碼呼叫 bitmapData 物件上的 unlock() 方法:
import flash.display.BitmapData;

var bitmapData:BitmapData = picture.bitmapData;
bitmapData.lock();
bitmapData = complexTransformation(bitmapData);
bitmapData.unlock();
picture.bitmapData = bitmapData;
BitmapDataExample.as

下列範例會使用 BitmapDataExample 類別,將 Image.gif 影像載入至 DisplayObject 中的預設位置 (0, 0)。 接著,再將此 Image.gif 的副本置於原影像的右方,此副本具有套用至使用 threshold() 方法將新顏色套用至已經通過測試的像素。 您可以執行下列步驟來完成這項工作:
  1. 會建立 url 屬性,此屬性為影像檔的位置與名稱。
  2. 此類別建構函式會建立 Loader 物件,然後將事件偵聽程式實體化,並且在 completeHandler() 方法完成影像操作後傳送。
  3. 然後將 request URLRequest 物件傳送至 loader.load(),並使用顯示物件將影像載入記憶體。
  4. 影像接著會被放置到顯示清單中,並於螢幕上 x = 0, y = 0 的座標位置顯示該影像。
  5. completeHandler() 方法接著會進行下列動作:
    • 建立第二個 Loader 物件,並建立以此 Loader 物件初始化的 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 BitmapDataExample extends Sprite {
        private var url:String = "Image.gif";
        private var size:uint = 80;

        public function BitmapDataExample() {
            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);
        }
    }
}
BitmapDataExample2.as





[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。