Paket | flash.display |
Klasse | public class BitmapData |
Vererbung | BitmapData Object |
Implementiert | IBitmapDrawable |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
flash.display.Loader
-Klasse laden.
Mit dieser Klasse können Sie Bitmap-Wiedergabeoperationen von den internen Anzeigeaktualisierungsroutinen von Flash Player trennen. Mit einer unmittelbaren Bearbeitung der BitmapData-Objekte können Sie komplexe Bilder erstellen, ohne bei jedem Bild den Aufwand für die ständig erneuerte Darstellung der Vektordaten berücksichtigen zu müssen.
Die Methoden der BitmapData-Klasse unterstützen Effekte, die über die Filter für Nicht-Bitmap-Anzeigeobjekte nicht verfügbar sind.
Ein BitmapData-Objekt enthält eine ganze Reihe von Pixeldaten. Diese Daten repräsentieren entweder eine vollständig transparente oder eine vollständig undurchsichtige Bitmap mit Alphakanaldaten. Jeder BitmapData-Objekttyp wird als Puffer mit 32-Bit-Ganzzahlen gespeichert. Dabei bestimmt jede 32-Bit-Ganzzahl die Eigenschaften eines Pixels in der Bitmap.
Bei diesen Zahlen handelt es sich um eine Kombination von vier 8-Bit-Kanalwerten zwischen 0 und 255, mit denen die Alphatransparenz sowie die Werte für Rot, Grün und Blau (ARGB) des Pixels bezeichnet werden. (Für ARGB-Werte repräsentiert das höchstwertige Byte den Alphakanalwert, gefolgt von Rot, Grün und Blau.)
Die vier Kanäle (Alpha, Rot, Grün und Blau) werden durch Zahlen repräsentiert, wenn Sie sie mit der BitmapData.copyChannel()
-Methode oder den Eigenschaften DisplacementMapFilter.componentX
und DisplacementMapFilter.componentY
verwenden. Diese Zahlen werden in der BitmapDataChannel-Klasse durch die folgenden Konstanten repräsentiert:
-
BitmapDataChannel.ALPHA
-
BitmapDataChannel.RED
-
BitmapDataChannel.GREEN
-
BitmapDataChannel.BLUE
Sie können BitmapData-Objekte mit einem Bitmap-Objekt verbinden, indem Sie die bitmapData
-Eigenschaft des Bitmap-Objekts verwenden.
Sie können ein BitmapData-Objekt verwenden, um ein Graphics-Objekt zu füllen, indem Sie die Graphics.beginBitmapFill()
-Methode verwenden.
In der AIR-Laufzeitumgebung umfassen die DockIcon-, Icon-, InteractiveIcon- und SystemTrayIcon-Klassen eine bitmaps
-Eigenschaft, bei der es sich um ein Array der BitmapData-Objekte handelt, die die Bitmapbilder für ein Symbol definieren.
In AIR 1.5 und Flash Player 10 beträgt die maximale Höhe oder Breite eines BitmapData-Objekts 8.191 Pixel, die gesamte Pixelzahl darf 16.777.215 nicht übersteigen. (Wenn ein BitmapData-Objekt also 8.191 Pixel breit ist, darf es nur 2.048 Pixel hoch sein.) In Flash Player 9 und niedriger und AIR 1.1 und niedriger liegt die Grenze bei je 2.880 Pixel Höhe und Breite.
Beginnend mit AIR 3 und Flash Player 11 wurden die Größenbegrenzungen für BitmapData-Objekte entfernt. Die maximale Bitmapgröße wird jetzt durch das Betriebssystem festgelegt.
Aufrufe von Methoden oder Eigenschaften eines BitmapData-Objekts lösen einen ArgumentError-Fehler aus, wenn das BitmapData-Objekt ungültig ist (wenn z. B. height == 0
und width == 0
ist) oder wenn es mithilfe von „dispose()“ entfernt worden ist.
Verwandte API-Elemente
flash.desktop.DockIcon.bitmaps
flash.display.Graphics.beginBitmapFill()
flash.desktop.Icon.bitmaps
flash.desktop.InteractiveIcon.bitmaps
flash.display.Loader
flash.desktop.SystemTrayIcon.bitmaps
Eigenschaft | Definiert von | ||
---|---|---|---|
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
height : int [schreibgeschützt]
Die Höhe der Bitmap in Pixel. | BitmapData | ||
rect : Rectangle [schreibgeschützt]
Das Rechteck, das die Größe und Lage der Bitmap definiert. | BitmapData | ||
transparent : Boolean [schreibgeschützt]
Gibt an, ob die Bitmap Transparenz pro Pixel unterstützt. | BitmapData | ||
width : int [schreibgeschützt]
Die Breite der Bitmap in Pixel. | BitmapData |
Methode | Definiert von | ||
---|---|---|---|
Erstellt ein neues BitmapData-Objekt mit der angegebenen Breite und Höhe. | BitmapData | ||
applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Erstellt anhand eines Quellbilds und eines filter-Objekts das gefilterte Bild. | BitmapData | ||
Gibt ein neues BitmapData-Objekt zurück, das ein Klon der ursprünglichen Instanz ist, mit einer exakten Kopie der enthaltenen Bitmap. | BitmapData | ||
Passt die Farbwerte in einem angegebenen Bereich einer Bitmap mithilfe eines ColorTransform-Objekts an. | BitmapData | ||
Vergleicht zwei BitmapData-Objekte. | BitmapData | ||
copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Überträgt Daten innerhalb des aktuellen BitmapData-Objekts aus einem Kanal in einen anderen bzw. überträgt Daten in einen Kanal des aktuellen BitmapData-Objekts, die aus einem Kanal eines anderen BitmapData-Objekts stammen. | BitmapData | ||
copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Bietet eine schnelle Routine zur Bearbeitung von Pixeln zwischen Bildern ohne Dehnung, Drehung oder Farbeffekte. | BitmapData | ||
Füllt ein Byte-Array aus einem rechteckigen Bereich mit Pixeldaten. | BitmapData | ||
Gibt Speicher frei, der zum Speichern des BitmapData-Objekts verwendet wird. | BitmapData | ||
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Zeichnet das source-Anzeigeobjekt mithilfe des Vektorrenderers der Flash-Laufzeitumgebung auf das Bitmapbild. | 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
Zeichnet das source-Anzeigeobjekt mithilfe des Vektorrenderers der Flash-Laufzeitumgebung auf das Bitmapbild. | BitmapData | ||
Komprimiert dieses BitmapData-Objekt mit dem ausgewählten Komprimierungsalgorithmus und gibt ein neues ByteArray-Objekt zurück. | BitmapData | ||
Füllt einen rechteckigen Pixelbereich mit der angegebenen ARGB-Farbe. | BitmapData | ||
Führt für ein Bild ausgehend von einer (x, y)-Koordinate einen Flood-Fill-Vorgang mit einer bestimmten Farbe durch. | BitmapData | ||
Bestimmt das Zielrechteck, auf das sich der Aufruf der applyFilter()-Methode auswirkt. Die Angaben beziehen sich auf ein BitmapData-Objekt, ein Quellrechteck und ein filter-Objekt. | BitmapData | ||
Legt einen rechteckigen Bereich fest, der entweder innerhalb der Bitmap alle Pixel einer bestimmten Farbe vollständig umschließt (wenn der findColor-Parameter auf „true“ gesetzt ist) oder alle Pixel vollständig umschließt, die die angegebene Farbe nicht enthalten (wenn der findColor-Parameter auf „false“ gesetzt ist). | BitmapData | ||
Gibt eine Ganzzahl zurück, die einen RGB-Pixelwert eines BitmapData-Objekts an einem bestimmten Punkt (x, y) darstellt. | BitmapData | ||
Gibt einen ARGB-Farbwert zurück, der Alphakanal- und RGB-Daten enthält. | BitmapData | ||
Erzeugt ein Byte-Array aus einem rechteckigen Bereich mit Pixeldaten. | BitmapData | ||
Erzeugt ein Vektor-Array aus einem rechteckigen Bereich mit Pixeldaten. | BitmapData | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Berechnet ein Histogramm mit 256 Binärzahlwerten für ein BitmapData-Objekt. | BitmapData | ||
hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Führt zwischen einer Bitmap und einem Punkt, einem Rechteck oder einer anderen Bitmap eine Kollisionserkennung auf Pixelebene durch. | BitmapData | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Sperrt ein Bild, sodass Objekte, die auf das BitmapData-Objekt verweisen, z. B. Bitmap-Objekte, nicht aktualisiert werden, wenn sich dieses BitmapData-Objekt ändert. | BitmapData | ||
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Führt von einem Quellbild zu einem Zielbild eine Mischung pro Kanal durch. | BitmapData | ||
noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Füllt ein Bild mit Pixeln, die zufällige Störungen darstellen. | BitmapData | ||
paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Ordnet die Farbkanalwerte in einem Bild mit maximal vier Arrays von Farbpalettendaten neu zu, wobei die einzelnen Arrays jeweils einen Kanal darstellen. | BitmapData | ||
perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Erstellt ein Perlin-Störungsbild. | BitmapData | ||
pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Führt eine Pixelauflösung von einem Quellbild zu einem Zielbild oder anhand desselben Bilds durch. | BitmapData | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Führt für ein Bild einen Bildlauf anhand eines bestimmten Pixelbetrags (x, y) durch. | BitmapData | ||
Legt den Farbwert eines einzelnen Pixels eines BitmapData-Objekts fest. | BitmapData | ||
Legt den Farb- und Alphatransparenzwert eines einzelnen Pixels eines BitmapData-Objekts fest. | BitmapData | ||
Erzeugt ein Byte-Array aus einem rechteckigen Bereich mit Pixeldaten. | BitmapData | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Konvertiert einen Vektor in einen rechteckigen Bereich mit Pixeldaten. | BitmapData | ||
threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Prüft die Pixelwerte eines Bilds für einen angegebenen Schwellenwert und weist den Pixeln, die die Bedingung des Tests erfüllen, neue Farbwerte zu. | BitmapData | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Gibt das angegebene Objekt als String zurück. | Object | ||
Entsperrt ein Bild, sodass Objekte, die auf das BitmapData-Objekt verweisen, z. B. Bitmap-Objekte, aktualisiert werden, wenn sich dieses BitmapData-Objekt ändert. | BitmapData | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object |
height | Eigenschaft |
rect | Eigenschaft |
rect:Rectangle
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Das Rechteck, das die Größe und Lage der Bitmap definiert. Der obere und linke Rand des Rechtecks liegen jeweils an der Position 0 (null). Die Werte für Breite und Höhe sind mit der Breite und Höhe des BitmapData-Objekts identisch.
Implementierung
public function get rect():Rectangle
transparent | Eigenschaft |
transparent:Boolean
[schreibgeschützt] Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Gibt an, ob die Bitmap Transparenz pro Pixel unterstützt. Sie können diesen Wert nur dann einstellen, wenn Sie beim Erstellen des BitmapData-Objekts den Wert true
für den Parameter transparent
des Konstruktors übergeben. Nachdem Sie ein BitmapData-Objekt erstellt haben, können Sie dieses Objekt auf die Unterstützung der Transparenz pro Pixel prüfen, indem Sie feststellen, ob die transparent
-Eigenschaft auf true
gesetzt ist.
Implementierung
public function get transparent():Boolean
width | Eigenschaft |
BitmapData | () | Konstruktor |
public function BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Erstellt ein neues BitmapData-Objekt mit der angegebenen Breite und Höhe. Wenn Sie einen Wert für den Parameter fillColor
eingeben, wird jedes Pixel der Bitmap auf diese Farbe eingestellt.
In der Standardeinstellung wird die Bitmap als transparente Grafik erstellt, es sei denn, Sie übergeben für den Parameter false
den Wert transparent
. Eine als undurchsichtiges Bild erstellte Bitmap kann nicht mehr in eine transparente Bitmap umgewandelt werden. Jedes Pixel einer undurchsichtigen Bitmap verwendet nur 24 Bit der Farbkanaldaten. Wenn Sie eine Bitmap dagegen als transparent definieren, müssen für jedes Pixel, einschließlich der Alphatransparenzdaten, 32 Bit an Farbkanaldaten verwendet werden.
In AIR 1.5 und Flash Player 10 beträgt die maximale Höhe oder Breite eines BitmapData-Objekts 8.191 Pixel, die gesamte Pixelzahl darf 16.777.215 nicht übersteigen. (Wenn ein BitmapData-Objekt also 8.191 Pixel breit ist, darf es nur 2.048 Pixel hoch sein.) In Flash Player 9 und niedriger und AIR 1.1 und niedriger liegt die Grenze bei je 2.880 Pixel Höhe und Breite. Falls Sie für „width“ oder „height“ höhere Werte als 2.880 angeben, wird keine neue Instanz erstellt.
Parameterwidth:int — Die Breite der Bitmap in Pixel.
| |
height:int — Die Höhe der Bitmap in Pixel.
| |
transparent:Boolean (default = true ) — Gibt an, ob die Bitmap Transparenz pro Pixel unterstützt. Der Standardwert lautet true (transparent). Um eine vollständig transparente Bitmap zu erstellen, setzen Sie den Wert des Parameters transparent auf true und den Wert des Parameters fillColor auf 0x00000000 (bzw. auf 0). Die Einstellung der transparent -Eigenschaft auf false kann eine leichte Verbesserung der Wiedergabe-Performance zur Folge haben.
| |
fillColor:uint (default = 0xFFFFFFFF ) — Ein 32-Bit-ARGB-Farbwert, der die Füllfarbe des Bitmap-Bereichs angibt. Der Standardwert lautet 0xFFFFFFFF (reines Weiß).
|
Auslöser
ArgumentError — Breite und/oder Höhe übersteigen die maximalen Abmessungen.
|
applyFilter | () | Methode |
public function applyFilter(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, filter:BitmapFilter):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Erstellt anhand eines Quellbilds und eines filter-Objekts das gefilterte Bild.
Diese Methode greift auf das Verhalten integrierter filter-Objekte zurück, mit deren Code das Zielrechteck bestimmt werden kann, das durch ein Eingabequellrechteck geändert wird.
Nach dem Anwenden des Filters ist das Ergebnis unter Umständen größer als das Ausgangsbild. Wenn beispielsweise ein Eingabequellrechteck mit den Werten (50,50,100,100) und dem Zielpunkt (10,10) mithilfe einer BlurFilter-Klasse weichgezeichnet wird, wird der geänderte Bereich im Zielbild wegen der Weichzeichnung größer als (10,10,60,60). Dies geschieht intern während des Aufrufs von applyFilter()
.
Wenn der Parameter sourceRect
des Parameters sourceBitmapData
einen inneren Bereich wie (50,50,100,100) in einer Grafik der Größe 200 x 200 Pixel angibt, generiert der Filter das Zielrechteck anhand der Quellpixel außerhalb des Parameters sourceRect
.
Wenn es sich bei dem BitmapData-Objekt und dem als sourceBitmapData
-Parameter festgelegten Objekt um dasselbe Objekt handelt, verwendet die Anwendung eine temporäre Kopie des Objekts, um den Filter anzuwenden. Die beste Performance erhalten Sie jedoch, wenn Sie diese Situation vermeiden.
Parameter
sourceBitmapData:BitmapData — Die als Eingabe verwendete Bitmap. Das Quellbild kann ein anderes BitmapData-Objekt oder ein Verweis auf die aktuelle BitmapData-Instanz sein.
| |
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
destPoint:Point — Der Punkt innerhalb des Zielbilds (die aktuelle BitmapData-Instanz), der der linken oberen Ecke des Quellrechtecks entspricht.
| |
filter:BitmapFilter — Das filter-Objekt, mit dem die Filteroperation durchgeführt wird. Jeder Filtertyp hat bestimmte Grundvoraussetzungen, und zwar:
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“, „destPoint“ oder „filter“ haben den Wert null.
| |
IllegalOperationError — Die Transparenzwerte der BitmapData-Objekte sind nicht kompatibel mit der filter-Operation.
|
Verwandte API-Elemente
flash.filters.BlurFilter
flash.filters.ColorMatrixFilter
flash.filters.ConvolutionFilter
flash.filters.DisplacementMapFilter
flash.filters.DropShadowFilter
flash.filters.GlowFilter
flash.display.DisplayObject.filters
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function clone():BitmapData
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Gibt ein neues BitmapData-Objekt zurück, das ein Klon der ursprünglichen Instanz ist, mit einer exakten Kopie der enthaltenen Bitmap.
RückgabewerteBitmapData — Ein mit dem Original identisches neues BitmapData-Objekt.
|
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function colorTransform(rect:Rectangle, colorTransform:flash.geom:ColorTransform):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Passt die Farbwerte in einem angegebenen Bereich einer Bitmap mithilfe eines ColorTransform
-Objekts an. Falls das Rechteck mit den Begrenzungen der Bitmap übereinstimmt, wandelt diese Methode die Farbwerte des gesamten Bilds um.
Parameter
rect:Rectangle — Ein Rechteckobjekt, das den Bereich des Bilds definiert, auf den das ColorTransform-Objekt angewendet wird.
| |
colorTransform:flash.geom:ColorTransform — Ein ColorTransform-Objekt, das die anzuwendenden Werte für die Farbtransformation beschreibt.
|
Auslöser
TypeError — „rect“ oder „colorTransform“ haben den Wert null.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function compare(otherBitmapData:BitmapData):Object
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Vergleicht zwei BitmapData-Objekte. Besitzen die beiden BitmapData-Objekte dieselben Abmessungen (Breite und Höhe), gibt die Methode ein neues BitmapData-Objekt zurück, in dem jedes Pixel die „Differenz“ zwischen den Pixeln in den beiden Quellobjekten beschreibt:
- Sind zwei Pixel gleich, hat das Differenzpixel den Wert 0x00000000.
- Besitzen zwei Pixel unterschiedliche RGB-Werte (ohne den Alphawert zu berücksichtigen), hat das Differenzpixel den Wert 0xRRGGBB, wobei RR/GG/BB die einzelnen Differenzwerte zwischen den Rot-, Grün- und Blaukanälen darstellen (Pixelwert im Quellobjekt minus Pixelwert im
otherBitmapData
-Objekt). Alphakanaldifferenzen werden in diesem Fall ignoriert. - Weist nur der Alphakanal einen anderen Wert auf, ist der Pixelwert 0xZZFFFFFF, wobei ZZ den Unterschied zwischen den Alphawerten darstellt (Alphawert im Quellobjekt minus Alphawert im
otherBitmapData
-Objekt).
Betrachten Sie beispielsweise die folgenden beiden BitmapData-Objekte:
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
Hinweis: Die zum Füllen der beiden BitmapData-Objekte verwendeten Farben haben leicht abweichende RGB-Werte (0xFF0000 und 0xFFAA00). Das Ergebnis der compare()
-Methode ist ein neues BitmapData-Objekt, in dem jedes Pixel die Abweichung zwischen den beiden Bitmaps in den RGB-Werten aufzeigt.
Betrachten Sie die folgenden beiden BitmapData-Objekte, in denen die RGB-Farben gleich sind, der Alphawert aber unterschiedlich ist:
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
Das Ergebnis der compare()
-Methode ist ein neues BitmapData-Objekt, in dem jedes Pixel die Abweichung zwischen den beiden Bitmaps in den Alphawerten aufzeigt.
Sind die beiden BitmapData-Objekte gleich (mit derselben Breite, Höhe und identischen Pixelwerten), gibt die Methode die Zahl 0 zurück.
Wenn die Breiten der BitmapData-Objekte ungleich sind, gibt die Methode die Zahl -3 zurück.
Ist die Höhe der beiden BitmapData-Objekte nicht gleich, dafür jedoch die Breite, gibt die Methode die Zahl -4 zurück.
Das folgende Beispiel vergleicht zwei Bitmap-Objekte mit unterschiedlicher Breite (50 und 60):
var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -4
Parameter
otherBitmapData:BitmapData — Das BitmapData-Objekt, das mit dem BitmapData-Quellobjekt verglichen werden soll.
|
Object — Besitzen die beiden BitmapData-Objekte dieselben Abmessungen (Breite und Höhe), gibt die Methode ein neues BitmapData-Objekt zurück, das den Unterschied zwischen den beiden Objekten enthält (siehe Hauptthema). Sind die BitmapData-Objekte gleich, gibt die Methode die Zahl 0 zurück. Wenn die Breiten der BitmapData-Objekte ungleich sind, gibt die Methode die Zahl -3 zurück. Wenn die Höhen der BitmapData-Objekte ungleich sind, gibt die Methode die Zahl -4 zurück.
|
Auslöser
TypeError — „otherBitmapData“ hat den Wert null.
|
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function copyChannel(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, sourceChannel:uint, destChannel:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Überträgt Daten innerhalb des aktuellen BitmapData-Objekts aus einem Kanal in einen anderen bzw. überträgt Daten in einen Kanal des aktuellen BitmapData-Objekts, die aus einem Kanal eines anderen BitmapData-Objekts stammen. Alle Daten der anderen Kanäle im BitmapData-Zielobjekt bleiben erhalten.
Die Einstellungen für den Quell- und Zielkanal können einen der folgenden Werte annehmen:
BitmapDataChannel.RED
BitmapDataChannel.GREEN
BitmapDataChannel.BLUE
BitmapDataChannel.ALPHA
Parameter
sourceBitmapData:BitmapData — Die als Eingabe verwendete Bitmap. Das Quellbild kann ein anderes BitmapData-Objekt oder ein Verweis auf das aktuelle BitmapData-Objekt sein.
| |
sourceRect:Rectangle — Das Quellrechteckobjekt. Um nur die Kanaldaten eines kleineren Bereichs innerhalb der Bitmap zu kopieren, geben Sie ein Quellrechteck an, das kleiner ist als das ganze BitmapData-Objekt.
| |
destPoint:Point — Das Point-Zielobjekt, das die linke obere Ecke des Rechteckbereichs darstellt, in den die neuen Kanaldaten eingefügt werden. Um nur die Kanaldaten eines Bereichs im Zielbild in einen anderen Bereich dieses Zielbilds zu kopieren, geben Sie einen anderen Punkt als (0,0) an.
| |
sourceChannel:uint — Der Quellkanal. Verwenden Sie einen Wert aus der BitmapDataChannel-Klasse (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA ).
| |
destChannel:uint — Der Zielkanal. Verwenden Sie einen Wert aus der BitmapDataChannel-Klasse (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN , BitmapDataChannel.ALPHA ).
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“ oder „destPoint“ haben den Wert null.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function copyPixels(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Bietet eine schnelle Routine zur Bearbeitung von Pixeln zwischen Bildern ohne Dehnung, Drehung oder Farbeffekte. Diese Methode kopiert einen Rechteckbereich eines Quellbilds in einen Rechteckbereich gleicher Größe an den Zielpunkt im BitmapData-Zielobjekt.
Wenn Sie auch die Parameter alphaBitmap
und alphaPoint
angeben, können Sie ein zweites Bild als Alphaquelle für das Quellbild verwenden. Verfügt auch das Quellbild über Alphadaten, werden die Alphadaten beider Bilder verwendet, um die Pixel des Quellbilds in das Zielbild zu projizieren. Der Parameter alphaPoint
gibt dabei den Punkt innerhalb des Zielbilds an, der der linken oberen Ecke des Quellrechtecks entspricht. Sämtliche Pixel außerhalb des Überschneidungsbereichs von Quell- und Alphabild werden nicht in das Zielbild kopiert.
Die mergeAlpha
-Eigenschaft steuert, ob das Kopieren eines transparenten Bilds auf ein anderes transparentes Bild unter Berücksichtigung des Alphakanals durchgeführt wird. Um die Pixel mit Alphakanaldaten zu kopieren, setzen Sie die mergeAlpha
-Eigenschaft auf true
. In der Standardeinstellung hat die mergeAlpha
-Eigenschaft den Wert false
.
Parameter
sourceBitmapData:BitmapData — Die Eingabe-Bitmap, aus der die Pixel kopiert werden sollen. Das Quellbild kann eine andere BitmapData-Instanz oder ein Verweis auf die aktuelle BitmapData-Instanz sein.
| |
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
destPoint:Point — Der Zielpunkt, der die linke obere Ecke des Rechteckbereichs darstellt, in den die kopierten Pixel eingefügt werden.
| |
alphaBitmapData:BitmapData (default = null ) — Ein zweites BitmapData-Objekt als Alphaquelle.
| |
alphaPoint:Point (default = null ) — Der Punkt in der BitmapData-Objektquelle, der der linken oberen Ecke des sourceRect -Parameters entspricht.
| |
mergeAlpha:Boolean (default = false ) — Um den Alphakanal zu verwenden, setzen Sie den Wert auf true . Um die Pixel ohne Alphadaten zu kopieren, setzen Sie den Wert auf false .
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“, „destPoint“ haben den Wert null.
|
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function copyPixelsToByteArray(rect:Rectangle, data:ByteArray):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 11.4, AIR 3.4 |
Füllt ein Byte-Array aus einem rechteckigen Bereich mit Pixeldaten. Beginnend beim position
-Index des ByteArray, schreibt diese Methode für jedes Pixel eine vorzeichenlose Ganzzahl (einen nicht multiplizierten 32-Bit-Pixelwert) in das Bytearray. Falls erforderlich, wird die Größe des Bytearrays auf die erforderliche Anzahl Bytes erhöht, um alle Pixeldaten aufzunehmen.
Parameter
rect:Rectangle — Ein rechteckiger Bereich im aktuellen BitmapData-Objekt
| |
data:ByteArray — das ByteArray-Zielobjekt
|
Auslöser
TypeError — wenn das rect -Argument null oder das data -Argument null ist
|
Verwandte API-Elemente
dispose | () | Methode |
public function dispose():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Gibt Speicher frei, der zum Speichern des BitmapData-Objekts verwendet wird.
Wenn die dispose()
-Methode für ein Bild aufgerufen wird, werden Breite und Höhe des Bilds auf 0 gesetzt. Alle nachfolgenden Aufrufe von Methoden und Eigenschaften für diese BitmapData-Instanz schlagen fehl, und eine Ausnahme wird ausgelöst.
BitmapData.dispose()
gibt den Arbeitsspeicher, der von den tatsächlichen Bitmapdaten belegt wird, sofort frei (ein Bitmap kann bis zu 64 MB Arbeitsspeicher belegen). Nach der Verwendung von BitmapData.dispose()
kann das BitmapData-Objekt nicht mehr verwendet werden und die Flash-Laufzeitumgebung gibt eine Ausnahme aus, wenn Sie Funktionen für das BitmapData-Objekt aufrufen. Mit BitmapData.dispose()
wird jedoch nicht das BitmapData-Objekt (ca. 128 Byte) aus dem Speicher entfernt; der vom eigentlichen BitmapData-Objekt belegte Arbeitsspeicher wird frei, wenn das BitmapData-Objekt vom Garbage Collector aus dem Speicher entfernt wird.
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
dispose()
-Methode auswirkt (es wird eine Ausnahme ausgelöst):
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 | () | Methode |
public function draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:flash.geom:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Zeichnet das source
-Anzeigeobjekt mithilfe des Vektorrenderers der Flash-Laufzeitumgebung auf das Bitmapbild. Sie können matrix
, colorTransform
, blendMode
und einen Zielparameter clipRect
angeben, der steuert, wie das Rendern durchgeführt wird. Optional können Sie auch festlegen, ob die Bitmap beim Skalieren geglättet werden soll (dies funktioniert nur, wenn es sich beim Quellobjekt um ein BitmapData-Objekt handelt).
Hinweis: Die drawWithQuality()
-Methode funktioniert genauso wie die draw()
-Methode, aber anstatt die Stage.quality
-Eigenschaft zum Bestimmen der Qualität des Vektorrenderings zu verwenden, geben Sie den quality
-Parameter für die drawWithQuality()
-Methode an.
Diese Methode entspricht der Einstellung des Zeichnungsverfahrens mithilfe des Standardvektorrenderers für Objekte in der Authoring-Umgebung.
Das Quellanzeigeobjekt verwendet bei diesem Aufruf keines seiner angewendeten Transformationsverfahren. Es wird so verarbeitet, wie es in der Bibliothek oder Datei vorliegt. Dabei werden keine Matrix- oder Farbtransformationen durchgeführt und keine Mischmodi verwendet. Wenn Sie beim Zeichnen des Anzeigeobjekts (etwa eines Movieclips) seine eigenen Transformationseigenschaften verwenden möchten, können Sie das entsprechende transform
-Eigenschaftsobjekt in die transform
-Eigenschaft des Bitmap-Objekts kopieren, die das BitmapData-Objekt verwendet.
Diese Methode wird in Flash Player 9.0.115.0 und höher sowie in Adobe AIR über RTMP unterstützt. Sie können den Zugriff auf Streams auf Flash Media Server in einem serverseitigen Skript steuern. Weitere Informationen finden Sie in den Abschnitten zu den Eigenschaften Client.audioSampleAccess
und Client.videoSampleAccess
in Server-Side ActionScript Language Reference for Adobe Flash Media Server.
Wenn das source-Objekt und (bei einem Sprite- oder MovieClip-Objekt) alle seine untergeordneten Objekte nicht aus derselben Domäne wie der Aufrufer stammen oder sich nicht in Inhalt befinden, auf den der Aufrufer über einen Aufruf der Security.allowDomain()
-Methode zugreifen kann, tritt bei einem Aufruf von draw()
eine SecurityError-Ausnahme auf. Diese Einschränkung gilt nicht für AIR-Inhalt in der Sicherheits-Sandbox der Anwendung.
Es gibt auch Beschränkungen für die Verwendung eines geladenen Bitmapbilds als source
. Das Aufrufen der draw()
-Methode ist erfolgreich, wenn das geladene Bild aus derselben Domäne stammt wie der Aufrufer. Des Weiteren kann eine domänenübergreifende Richtliniendatei auf dem Server des Bilds der Domäne des SWF-Inhalts, der die draw()
-Methode aufruft, die Berechtigung erteilen. In diesem Fall setzen Sie die checkPolicyFile
-Eigenschaft eines LoaderContext-Objekts und verwenden dieses Objekt als context
-Parameter beim Aufrufen der load()
-Methode des Loader-Objekts, das für das Laden des Bilds verwendet wird. Diese Sicherheitseinschränkungen gelten nicht für AIR-Inhalte in der Sicherheitssandbox der Anwendung.
Unter Windows kann die draw()
-Methode keinen SWF-Inhalt erfassen, der in einer HTML-Seite in einem HTMLLoader-Objekt in Adobe AIR eingebettet ist.
Die draw()
-Methode kann keinen PDF-Inhalt in Adobe AIR erfassen. Sie kann auch keinen in HTML eingebetteten SWF-Inhalt erfassen, bei dem das wmode
-Attribut auf "window"
gesetzt ist in Adobe AIR.
Parameter
source:IBitmapDrawable — Das Anzeigeobjekt oder BitmapData-Objekt, das in das BitmapData-Objekt gezeichnet werden soll. (Die Klassen DisplayObject und BitmapData implementieren die IBitmapDrawable-Schnittstelle.)
| |
matrix:Matrix (default = null ) — Ein Matrix-Objekt, mit dem die Koordinaten der Bitmap skaliert, gedreht oder umgesetzt werden können. Wenn Sie auf das Bild keine Matrixtransformation anwenden möchten, setzen Sie diesen Parameter auf eine Identitätsmatrix, die mit dem Standardkonstruktor new Matrix() erstellt wurde, oder übergeben Sie einen null -Wert.
| |
colorTransform:flash.geom:ColorTransform (default = null ) — Ein ColorTransform-Objekt, mit dem die Farbwerte der Bitmap angepasst werden können. Falls kein Objekt vorhanden ist, findet keine Transformation der Bitmap-Farben statt. Wenn Sie diesen Parameter übergeben müssen, das Bild aber nicht transformieren möchten, setzen Sie diesen Parameter auf ein ColorTransform-Objekt, das mit dem Standardkonstruktor new ColorTransform() erstellt worden ist.
| |
blendMode:String (default = null ) — Ein String-Wert aus der flash.display.BlendMode-Klasse, der den Mischmodus festlegt, der auf die resultierende Bitmap angewendet werden soll.
| |
clipRect:Rectangle (default = null ) — Ein Rechteckobjekt, das den Bereich des zu zeichnenden Quellobjekts definiert. Wenn Sie diesen Wert nicht angeben, wird das Bild nicht abgeschnitten, und das gesamte Quellobjekt wird gezeichnet.
| |
smoothing:Boolean (default = false ) — Ein boolescher Wert, der festlegt, ob ein BitmapData-Objekt bei der Skalierung oder Drehung aufgrund einer Skalierung oder Drehung im Parameter matrix geglättet wird. Der Parameter smoothing ist nur anwendbar, wenn es sich beim Parameter source um ein BitmapData-Objekt handelt. Wenn smoothing auf false gesetzt ist, wirkt das gedrehte bzw. skalierte BitmapData-Bild grobkörnig oder ungeglättet. Die folgenden beiden Bilder verwenden z. B. beide das gleiche BitmapData-Objekt als source -Parameter, aber der Parameter smoothing ist links auf true und rechts auf false gesetzt:
Das Zeichnen einer Bitmap dauert länger, wenn |
Auslöser
ArgumentError — Beim source -Parameter handelt es sich nicht um ein BitmapData- oder DisplayObject-Objekt.
| |
SecurityError — Das source -Objekt und (bei einem Sprite- oder MovieClip-Objekt) alle seine untergeordneten Objekte stammen nicht aus derselben Domäne wie der Aufrufer oder befinden sich nicht in Inhalt, auf den der Aufrufer über einen Aufruf der Security.allowDomain() -Methode zugreifen kann. Diese Einschränkung gilt nicht für AIR-Inhalt in der Sicherheits-Sandbox der Anwendung.
| |
ArgumentError — Die Quelle ist null oder kein zulässiges IBitmapDrawable-Objekt.
|
Verwandte API-Elemente
flash.display.Stage.quality
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
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
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 11.3, AIR 3.3 |
Zeichnet das source
-Anzeigeobjekt mithilfe des Vektorrenderers der Flash-Laufzeitumgebung auf das Bitmapbild. Sie können matrix
, colorTransform
, blendMode
und einen Zielparameter clipRect
angeben, der steuert, wie das Rendern durchgeführt wird. Optional können Sie auch festlegen, ob die Bitmap beim Skalieren geglättet werden soll (dies funktioniert nur, wenn es sich beim Quellobjekt um ein BitmapData-Objekt handelt).
Hinweis: Die drawWithQuality()
-Methode funktioniert genauso wie die draw()
-Methode, aber anstatt die Stage.quality
-Eigenschaft zum Bestimmen der Qualität des Vektorrenderings zu verwenden, geben Sie den quality
-Parameter für die drawWithQuality()
-Methode an.
Diese Methode entspricht der Einstellung des Zeichnungsverfahrens mithilfe des Standardvektorrenderers für Objekte in der Authoring-Umgebung.
Das Quellanzeigeobjekt verwendet bei diesem Aufruf keines seiner angewendeten Transformationsverfahren. Es wird so verarbeitet, wie es in der Bibliothek oder Datei vorliegt. Dabei werden keine Matrix- oder Farbtransformationen durchgeführt und keine Mischmodi verwendet. Wenn Sie beim Zeichnen des Anzeigeobjekts (etwa eines Movieclips) seine eigenen Transformationseigenschaften verwenden möchten, können Sie das entsprechende transform
-Eigenschaftsobjekt in die transform
-Eigenschaft des Bitmap-Objekts kopieren, die das BitmapData-Objekt verwendet.
Diese Methode wird in Flash Player 9.0.115.0 und höher sowie in Adobe AIR über RTMP unterstützt. Sie können den Zugriff auf Streams auf Flash Media Server in einem serverseitigen Skript steuern. Weitere Informationen finden Sie in den Abschnitten zu den Eigenschaften Client.audioSampleAccess
und Client.videoSampleAccess
in Server-Side ActionScript Language Reference for Adobe Flash Media Server.
Wenn das source-Objekt und (bei einem Sprite- oder MovieClip-Objekt) alle seine untergeordneten Objekte nicht aus derselben Domäne wie der Aufrufer stammen oder sich nicht in Inhalt befinden, auf den der Aufrufer über einen Aufruf der Security.allowDomain()
-Methode zugreifen kann, tritt bei einem Aufruf von drawWithQuality()
eine SecurityError-Ausnahme auf. Diese Einschränkung gilt nicht für AIR-Inhalt in der Sicherheits-Sandbox der Anwendung.
Es gibt auch Beschränkungen für die Verwendung eines geladenen Bitmapbilds als source
. Das Aufrufen der drawWithQuality()
-Methode ist erfolgreich, wenn das geladene Bild aus derselben Domäne stammt wie der Aufrufer. Des Weiteren kann eine domänenübergreifende Richtliniendatei auf dem Server des Bilds der Domäne des SWF-Inhalts, der die drawWithQuality()
-Methode aufruft, die Berechtigung erteilen. In diesem Fall setzen Sie die checkPolicyFile
-Eigenschaft eines LoaderContext-Objekts und verwenden dieses Objekt als context
-Parameter beim Aufrufen der load()
-Methode des Loader-Objekts, das für das Laden des Bilds verwendet wird. Diese Sicherheitseinschränkungen gelten nicht für AIR-Inhalte in der Sicherheitssandbox der Anwendung.
Unter Windows kann die drawWithQuality()
-Methode keinen SWF-Inhalt erfassen, der in einer HTML-Seite in einem HTMLLoader-Objekt in Adobe AIR eingebettet ist.
Die drawWithQuality()
-Methode kann keinen PDF-Inhalt in Adobe AIR erfassen. Sie kann auch keinen in HTML eingebetteten SWF-Inhalt erfassen, bei dem das wmode
-Attribut auf "window"
gesetzt ist in Adobe AIR.
Parameter
source:IBitmapDrawable — Das Anzeigeobjekt oder BitmapData-Objekt, das in das BitmapData-Objekt gezeichnet werden soll. (Die Klassen DisplayObject und BitmapData implementieren die IBitmapDrawable-Schnittstelle.)
| |
matrix:Matrix (default = null ) — Ein Matrix-Objekt, mit dem die Koordinaten der Bitmap skaliert, gedreht oder umgesetzt werden können. Wenn Sie auf das Bild keine Matrixtransformation anwenden möchten, setzen Sie diesen Parameter auf eine Identitätsmatrix, die mit dem Standardkonstruktor new Matrix() erstellt wurde, oder übergeben Sie einen null -Wert.
| |
colorTransform:flash.geom:ColorTransform (default = null ) — Ein ColorTransform-Objekt, mit dem die Farbwerte der Bitmap angepasst werden können. Falls kein Objekt vorhanden ist, findet keine Transformation der Bitmap-Farben statt. Wenn Sie diesen Parameter übergeben müssen, das Bild aber nicht transformieren möchten, setzen Sie diesen Parameter auf ein ColorTransform-Objekt, das mit dem Standardkonstruktor new ColorTransform() erstellt worden ist.
| |
blendMode:String (default = null ) — Ein String-Wert aus der flash.display.BlendMode-Klasse, der den Mischmodus festlegt, der auf die resultierende Bitmap angewendet werden soll.
| |
clipRect:Rectangle (default = null ) — Ein Rechteckobjekt, das den Bereich des zu zeichnenden Quellobjekts definiert. Wenn Sie diesen Wert nicht angeben, wird das Bild nicht abgeschnitten, und das gesamte Quellobjekt wird gezeichnet.
| |
smoothing:Boolean (default = false ) — Ein boolescher Wert, der festlegt, ob ein BitmapData-Objekt bei der Skalierung oder Drehung aufgrund einer Skalierung oder Drehung im Parameter matrix geglättet wird. Der Parameter smoothing ist nur anwendbar, wenn es sich beim Parameter source um ein BitmapData-Objekt handelt. Wenn smoothing auf false gesetzt ist, wirkt das gedrehte bzw. skalierte BitmapData-Bild grobkörnig oder ungeglättet. Die folgenden beiden Bilder verwenden z. B. beide das gleiche BitmapData-Objekt als source -Parameter, aber der Parameter smoothing ist links auf true und rechts auf false gesetzt:
Das Zeichnen einer Bitmap dauert länger, wenn | |
quality:String (default = null ) — Ein beliebiger Wert der StageQuality-Werte. Wählt die Anti-Aliasing-Qualität aus, die beim Zeichnen von Vektorgrafiken verwendet wird.
|
Auslöser
ArgumentError — Beim source -Parameter handelt es sich nicht um ein BitmapData- oder DisplayObject-Objekt.
| |
SecurityError — Das source -Objekt und (bei einem Sprite- oder MovieClip-Objekt) alle seine untergeordneten Objekte stammen nicht aus derselben Domäne wie der Aufrufer oder befinden sich nicht in Inhalt, auf den der Aufrufer über einen Aufruf der Security.allowDomain() -Methode zugreifen kann. Diese Einschränkung gilt nicht für AIR-Inhalt in der Sicherheits-Sandbox der Anwendung.
| |
ArgumentError — Die Quelle ist null oder kein zulässiges IBitmapDrawable-Objekt.
|
Verwandte API-Elemente
flash.display.StageQuality
flash.display.BlendMode
flash.geom.ColorTransform
flash.geom.Matrix
flash.system.JPEGLoaderContext
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function encode(rect:Rectangle, compressor:Object, byteArray:ByteArray = null):ByteArray
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 11.3, AIR 3.3 |
Komprimiert dieses BitmapData-Objekt mit dem ausgewählten Komprimierungsalgorithmus und gibt ein neues ByteArray-Objekt zurück. Schreibt die resultierenden Daten optional in das angegebene ByteArray. Das compressor
-Argument gibt den Kodierungsalgorithmus an und kann den Wert PNGEncoderOptions, JPEGEncoderOptions oder JPEGXREncoderOptions haben.
Im folgenden Beispiel wird ein BitmapData-Objekt unter Verwendung von JPEGEncoderOptions komprimiert:
// 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);
Parameter
rect:Rectangle — Der Bereich des BitmapData-Objekts, das komprimiert wird.
| |
compressor:Object — Der zu verwendende Komprimierungstyp. Gültige Werte sind: flash.display.PNGEncoderOptions , flash.display.JPEGEncoderOptions und flash.display.JPEGXREncoderOptions .
| |
byteArray:ByteArray (default = null ) — Das Ausgabe-ByteArray, das das kodierte Bild enthalten soll.
|
ByteArray — Ein ByteArray, das das kodierte Bild enthält.
|
Verwandte API-Elemente
fillRect | () | Methode |
public function fillRect(rect:Rectangle, color:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Füllt einen rechteckigen Pixelbereich mit der angegebenen ARGB-Farbe.
Parameter
rect:Rectangle — Der zu füllende rechteckige Bereich.
| |
color:uint — Der ARGB-Farbwert, mit dem der Bereich gefüllt werden soll. ARGB-Farben werden häufig in einem hexadezimalen Format dargestellt, z. B. 0xFF336699.
|
Auslöser
TypeError — „rect“ hat den Wert null.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function floodFill(x:int, y:int, color:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Führt für ein Bild ausgehend von einer (x, y)-Koordinate einen Flood-Fill-Vorgang mit einer bestimmten Farbe durch. Die floodFill()
-Methode ist mit dem Farbeimerwerkzeug verschiedener Mal- und Zeichenprogramme vergleichbar. Als Farbe wird eine ARGB-Farbe einschließlich Alpha- und Farbdaten angegeben.
Parameter
x:int — Die x-Koordinate des Bilds.
| |
y:int — Die y-Koordinate des Bilds.
| |
color:uint — Die ARGB-Farbe, die zum Füllen verwendet wird.
|
Beispiel ( Verwendung dieses Beispiels )
(10, 10)
definierten Pixel umgibt, in dem alle Farben mit der Farbe an diesem Punkt übereinstimmen - mit Rot gefüllt wird
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 | () | Methode |
public function generateFilterRect(sourceRect:Rectangle, filter:BitmapFilter):Rectangle
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Bestimmt das Zielrechteck, auf das sich der Aufruf der applyFilter()
-Methode auswirkt. Die Angaben beziehen sich auf ein BitmapData-Objekt, ein Quellrechteck und ein filter-Objekt.
So bezieht sich ein Weichzeichnungsfilter normalerweise auf einen Bereich, der größer als das ursprüngliche Bild ist. Ein 100 x 200 Pixel großes Bild, das mit einer normalen BlurFilter-Instanz mit dem Wert blurX = blurY = 4
gefiltert wird, erzeugt ein Zielrechteck von (-2,-2,104,204)
. Mit der generateFilterRect()
-Methode können Sie die Größe des Zielrechtecks vorherbestimmen und die Größe des Zielbilds vor der Filterung entsprechend anpassen.
Einige Filter schneiden das Zielrechteck entsprechend der Größe des Zielbilds aus. So wird beispielsweise bei einem inneren DropShadow
-Objekt kein größeres Bild als das Quellbild erzeugt. In dieser API wird das BitmapData-Objekt als Quellbegrenzung und nicht als rect
-Quellparameter verwendet.
Parameter
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
filter:BitmapFilter — Ein filter-Objekt, das zur Berechnung des Zielrechtecks verwendet wird.
|
Rectangle — Ein Zielrechteck, das aus einem Bild, dem Parameter sourceRect und einem Filter berechnet wird.
|
Auslöser
TypeError — „sourceRect“ oder „filter“ haben den Wert null.
|
Beispiel ( Verwendung dieses Beispiels )
generateFilterRect()
-Methode hervor, mit der Sie den rechteckigen Bereich bestimmen, auf den sich ein Weichzeichnungsfilter auswirkt. Die Ergebnisse der generateFilterRect()
-Methode werden über die trace()
-Funktion ausgegeben:
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()
-Methode den Filter nicht anwendet. Rufen Sie die applyFilter()
-Methode auf, um den Filter anzuwenden.
getColorBoundsRect | () | Methode |
public function getColorBoundsRect(mask:uint, color:uint, findColor:Boolean = true):Rectangle
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Legt einen rechteckigen Bereich fest, der entweder innerhalb der Bitmap alle Pixel einer bestimmten Farbe vollständig umschließt (wenn der Parameter findColor
auf true
gesetzt ist) oder alle Pixel vollständig umschließt, die die angegebene Farbe nicht enthalten (wenn der Parameter findColor
auf false
gesetzt ist).
Wenn Sie beispielsweise mit einem Quellbild arbeiten und das Rechteck des Bilds bestimmen möchten, das Alphakanaldaten ungleich 0 (null) enthält, übergeben Sie {mask: 0xFF000000, color: 0x00000000}
als Parameter. Ist der Parameter findColor
auf true
gesetzt, wird das gesamte Bild nach den Begrenzungen der Pixel durchsucht, für die (value & mask) == color
gilt (wobei value
dem Farbwert der Pixel entspricht). Ist der Parameter findColor
auf false
gesetzt, wird das gesamte Bild nach den Begrenzungen der Pixel durchsucht, für die (value & mask) != color
gilt (wobei value
dem Farbwert der Pixel entspricht). Wenn Sie also den weißen Bereich ermitteln möchten, der um ein Bild angeordnet ist, übergeben Sie {mask: 0xFFFFFFFF, color: 0xFFFFFFFF}
, um nach der Begrenzung aller nicht-weißen Pixel zu suchen.
Parameter
mask:uint — Ein Hexadezimalwert, der die Bits der zu berücksichtigenden ARGB-Farbe festlegt. Der Farbwert wird durch Verwendung des & (bitweises AND) mit diesem Hexadezimalwert kombiniert.
| |
color:uint — Ein Hexadezimalwert, der die ARGB-Farbe festlegt, die übereinstimmen soll (wenn findColor auf true gesetzt ist) bzw. nicht übereinstimmen soll (wenn findColor auf false gesetzt ist).
| |
findColor:Boolean (default = true ) — Wenn der Wert auf true gesetzt ist, werden die Begrenzungen eines bestimmten Farbwerts in einem Bild zurückgegeben. Wenn der Wert auf false gesetzt ist, werden die Begrenzungen der Bereiche zurückgegeben, in denen der betreffende Farbwert im Bild nicht vorkommt.
|
Rectangle — Der Bereich des Bilds, der die angegebene Farbe enthält.
|
Beispiel ( Verwendung dieses Beispiels )
getColorBoundsRect()
-Methode aufgerufen, um das Rechteck zu bestimmen, dessen Pixel rot sind (0xFF0000). Im nächsten Schritt wird dieselbe Methode aufgerufen, um das Rechteck zu bestimmen, dessen Pixel nicht rot sind (indem der Parameter findColor
auf false
gesetzt wird):
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 | () | Methode |
public function getPixel(x:int, y:int):uint
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Gibt eine Ganzzahl zurück, die einen RGB-Pixelwert eines BitmapData-Objekts an einem bestimmten Punkt (x, y) darstellt. Die getPixel()
-Methode gibt einen nicht multiplizierten Pixelwert zurück. Es werden keine Alphadaten zurückgegeben.
Sämtliche Pixel eines BitmapData-Objekts werden als vormultiplizierte Farbwerte gespeichert. Bei diesen vormultiplizierten Bildpixeln sind die Farbkanalwerte für Rot, Grün und Blau bereits mit den Alphadaten multipliziert worden. Wenn also beispielsweise der Alphawert 0 (null) ist, lauten die Werte der RGB-Kanäle, unabhängig von ihren ursprünglichen Werten, ebenfalls 0 (null). Bei bestimmten Vorgängen kann dieser Datenverlust zu Problemen führen. Alle BitmapData-Methoden akzeptieren nicht multiplizierte Werte und geben diese auch zurück. Vor der Rückgabe der Werte wird die interne Pixeldarstellung von vormultipliziert in nicht multipliziert konvertiert. Vor dem Einstellen der Pixelrohdaten des Bilds wird der Pixelwert im Verlauf einer set-Operation vormultipliziert.
Parameter
x:int — Die x-Position eines Pixels.
| |
y:int — Die y-Position eines Pixels.
|
uint — Eine Zahl, die für den RGB-Pixelwert steht. Falls die x- und y-Koordinaten außerhalb der Bildbegrenzung liegen, gibt die Methode 0 (null) zurück.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
getPixel()
-Methode verwendet, um den Farbwert des linken oberen Pixels zu bestimmen.
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 | () | Methode |
public function getPixel32(x:int, y:int):uint
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Gibt einen ARGB-Farbwert zurück, der Alphakanal- und RGB-Daten enthält. Diese Methode ähnelt der getPixel()
-Methode, die einen RGB-Farbwert ohne Alphakanaldaten zurückgibt.
Sämtliche Pixel eines BitmapData-Objekts werden als vormultiplizierte Farbwerte gespeichert. Bei diesen vormultiplizierten Bildpixeln sind die Farbkanalwerte für Rot, Grün und Blau bereits mit den Alphadaten multipliziert worden. Wenn also beispielsweise der Alphawert 0 (null) ist, lauten die Werte der RGB-Kanäle, unabhängig von ihren ursprünglichen Werten, ebenfalls 0 (null). Bei bestimmten Vorgängen kann dieser Datenverlust zu Problemen führen. Alle BitmapData-Methoden akzeptieren nicht multiplizierte Werte und geben diese auch zurück. Vor der Rückgabe der Werte wird die interne Pixeldarstellung von vormultipliziert in nicht multipliziert konvertiert. Vor dem Einstellen der Pixelrohdaten des Bilds wird der Pixelwert im Verlauf einer set-Operation vormultipliziert.
Parameter
x:int — Die x-Position eines Pixels.
| |
y:int — Die y-Position eines Pixels.
|
uint — Eine Zahl, die einen ARGB-Pixelwert darstellt. Falls die x- und y-Koordinaten außerhalb der Bildbegrenzung liegen, wird 0 (null) zurückgegeben.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
getPixel32()
-Methode verwendet, um den Farbwert des linken oberen Pixels zu bestimmen. Danach werden die hexadezimalen Werte für die einzelnen Farbkomponenten (Alpha, Rot, Grün und Blau) bestimmt:
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 | () | Methode |
public function getPixels(rect:Rectangle):ByteArray
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Erzeugt ein Byte-Array aus einem rechteckigen Bereich mit Pixeldaten. Schreibt eine vorzeichenlose Ganzzahl (ein nicht multiplizierter 32-Bit-Pixelwert) für jedes Pixel in das Byte-Array.
Parameter
rect:Rectangle — Ein rechteckiger Bereich im aktuellen BitmapData-Objekt.
|
ByteArray — Ein Byte-Array, das die Pixel im gegebenen Rechteck repräsentiert.
|
Auslöser
TypeError — „rect“ hat den Wert null.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
getPixels()
-Methode verwendet, um ein ByteArray-Objekt mit den Pixelwerten des BitmapData-Objekts zu füllen.
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 | () | Methode |
public function getVector(rect:Rectangle):Vector.<uint>
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Erzeugt ein Vektor-Array aus einem rechteckigen Bereich mit Pixeldaten. Gibt ein Vector-Objekt aus vorzeichenlosen Ganzzahlen (ein nicht multiplizierter 32-Bit-Pixelwert) für das angegebene Rechteck zurück.
Parameter
rect:Rectangle — Ein rechteckiger Bereich im aktuellen BitmapData-Objekt.
|
Vector.<uint> — Ein Vektor, der das Rechteck darstellt.
|
Auslöser
TypeError — „rect“ hat den Wert null.
|
histogram | () | Methode |
public function histogram(hRect:Rectangle = null):Vector.<Vector.<Number>>
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Berechnet ein Histogramm mit 256 Binärzahlwerten für ein BitmapData-Objekt. Diese Methode gibt ein Vector-Objekt zurück, das vier Vector.<Number>-Instanzen enthält (vier Vector-Objekte, die Number-Objekte enthalten). Die vier Vector-Instanzen stellen die rote, grüne, blaue und Alphakomponente in dieser Reihenfolge dar. Jede Vector-Instanz enthält 256 Werte, die die Zählung eines einzelnen Komponentenwerts zwischen 0 und 255 enthalten.
Parameter
hRect:Rectangle (default = null ) — Der Bereich des BitmapData-Objekts, der verwendet wird.
|
Vector.<Vector.<Number>> |
hitTest | () | Methode |
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Führt zwischen einer Bitmap und einem Punkt, einem Rechteck oder einer anderen Bitmap eine Kollisionserkennung auf Pixelebene durch. Eine Kollision ist als Überlappung eines Punkts oder Rechtecks mit einem undurchsichtigen Pixel oder als Überlappung zweier undurchsichtiger Pixel definiert. Bei dieser Kollisionserkennung werden keine Dehnungen, Drehungen oder anderen Transformationen der Objekte berücksichtigt.
Handelt es sich bei einem Bild um ein undurchsichtiges Bild, wird es bei dieser Methode als vollständig undurchsichtiges Rechteck betrachtet. Beide Bilder müssen transparent sein, damit eine Kollisionserkennung auf Pixelebene durchgeführt werden kann, bei der die Transparenz berücksichtigt wird. Wenn Sie zwei transparente Bilder testen, steuern die Parameter für die Alphaschwellen, welche Alphakanalwerte zwischen 0 und 255 als undurchsichtig betrachtet werden.
Parameter
firstPoint:Point — Eine Position in der linken oberen Ecke des BitmapData-Bilds in einem beliebigen Koordinatenraum. Derselbe Koordinatenraum wird beim Definieren des Parameters secondBitmapPoint verwendet.
| |
firstAlphaThreshold:uint — Der niedrigste Alphakanalwert, der für diese Kollisionserkennung als undurchsichtig gewertet wird.
| |
secondObject:Object — Ein Rectangle-, Point-, Bitmap- oder BitmapData-Objekt.
| |
secondBitmapDataPoint:Point (default = null ) — Ein Punkt, der die Position eines Pixels im zweiten BitmapData-Objekt angibt. Sie sollten diesen Parameter nur verwenden, wenn der Wert von secondObject ein BitmapData-Objekt ist.
| |
secondAlphaThreshold:uint (default = 1 ) — Der niedrigste Alphakanalwert, der im zweiten BitmapData-Objekt als undurchsichtig gewertet wird. Sie sollten diesen Parameter nur verwenden, wenn der Wert von secondObject ein BitmapData-Objekt ist und beide BitmapData-Objekte transparent sind.
|
Boolean — Es gilt true , wenn eine Kollisionserkennung stattfindet, andernfalls gilt false .
|
Auslöser
ArgumentError — Der Parameter secondObject ist kein Point-, Rectangle-, Bitmap- oder BitmapData-Objekt.
| |
TypeError — „firstPoint“ hat den Wert null.
|
Beispiel ( Verwendung dieses Beispiels )
hitTest()
-Methode mit einem Point-Objekt als secondObject
aufruft. Beim ersten Aufruf definiert das Point-Objekt die obere linke Ecke des BitmapData-Objekts, die nicht undurchsichtig ist, und im zweiten Aufruf definiert das Point-Objekt den Mittelpunkt des BitmapData-Objekts, der undurchsichtig ist.
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 | () | Methode |
public function lock():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Sperrt ein Bild, sodass Objekte, die auf das BitmapData-Objekt verweisen, z. B. Bitmap-Objekte, nicht aktualisiert werden, wenn sich dieses BitmapData-Objekt ändert. Um die Performance zu verbessern, verwenden Sie diese Methode zusammen mit der unlock()
-Methode vor und nach mehreren Aufrufen der Methode setPixel()
oder setPixel32()
.
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
bitmapData
-Eigenschaft eines Bitmap-Objekts (picture
) erstellt. Das Objekt ruft dann die lock()
-Methode auf, bevor eine komplizierte benutzerdefinierte Funktion (complexTransformation()
) aufgerufen wird, die das BitmapData-Objekt ändert. (Das picture
-Objekt und die complexTransformation()
-Funktion sind in diesem Beispiel nicht definiert.) Auch wenn die complexTransformation()
-Funktion die bitmapData
-Eigenschaft des picture
-Objekts aktualisiert, werden die Änderungen erst wirksam, wenn der Code die unlock()
-Methode des bitmapData
-Objekts aufruft:
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
merge | () | Methode |
public function merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redMultiplier:uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Führt von einem Quellbild zu einem Zielbild eine Mischung pro Kanal durch. Für jeden Kanal und jedes Pixel wird ein neuer Wert berechnet. Dieser basiert auf den Kanalwerten der Quell- und Zielpixel. Im roten Kanal wird der neue Wert zum Beispiel wie folgt berechnet (wobei redSrc
der Wert des roten Kanals für ein Pixel im Quellbild ist und redDest
der Wert des roten Kanals für das entsprechende Pixel im Zielbild):
new redDest = [(redSrc * redMultiplier) + (redDest * (256 - redMultiplier))] / 256;
Die Werte redMultiplier
, greenMultiplier
, blueMultiplier
und alphaMultiplier
sind die für die einzelnen Farbkanäle verwendeten Multiplikatoren. Verwenden Sie einen Hexadezimalwert zwischen 0
und 0x100
(256), wobei 0
festlegt, dass der volle Wert aus dem Ziel im Ergebnis verwendet wird, 0x100
festlegt, dass der volle Wert aus der Quelle verwendet wird, und Zahlen dazwischen festlegen, dass eine Mischung verwendet wird (zum Beispiel 0x80
für 50 %).
Parameter
sourceBitmapData:BitmapData — Die als Eingabe verwendete Bitmap. Das Quellbild kann ein anderes BitmapData-Objekt oder ein Verweis auf das aktuelle BitmapData-Objekt sein.
| |
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
destPoint:Point — Der Punkt innerhalb des Zielbilds (die aktuelle BitmapData-Instanz), der der linken oberen Ecke des Quellrechtecks entspricht.
| |
redMultiplier:uint — Ein Hexadezimalwert, mit dem der Wert des Farbkanals Rot multipliziert wird.
| |
greenMultiplier:uint — Ein Hexadezimalwert, mit dem der Wert des Farbkanals Grün multipliziert wird.
| |
blueMultiplier:uint — Ein Hexadezimalwert, mit dem der Wert des Farbkanals Blau multipliziert wird.
| |
alphaMultiplier:uint — Ein Hexadezimalwert, mit dem der Alphatransparenzwert multipliziert wird.
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“ oder „destPoint“ haben den Wert null.
|
Beispiel ( Verwendung dieses Beispiels )
merge()
-Methode auf und führt die Pixel des zweiten BitmapData-Objekts mit den Pixeln des ersten BitmapData-Objekts zusammen. Dieser Schritt wird jedoch nur für einen angegebenen rechteckigen Bereich durchgeführt:
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 | () | Methode |
public function noise(randomSeed:int, low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Füllt ein Bild mit Pixeln, die zufällige Störungen darstellen.
Parameter
randomSeed:int — Der zu verwendende Anfangswert für den Zufallsgenerator. Wenn Sie alle anderen Parameter beibehalten, können Sie nur durch Änderung dieses Anfangswerts unterschiedliche pseudo-zufällige Ergebnisse erzielen. Bei der Störungsfunktion handelt es sich nicht um einen echten Zufallszahlengenerator, sondern eher um eine Zuordnungsfunktion, die mit gleich bleibendem Anfangswert immer dasselbe Ergebnis liefert.
| |
low:uint (default = 0 ) — Der niedrigste zu erzeugende Wert für jeden Kanal (0 bis 255).
| |
high:uint (default = 255 ) — Der höchste zu erzeugende Wert für jeden Kanal (0 bis 255).
| |
channelOptions:uint (default = 7 ) — Eine Zahl als beliebige Kombination der vier Farbkanalwerte (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN und BitmapDataChannel.ALPHA ). Sie können die Kanalwerte auch mithilfe des logischen OR-Operators (| ) kombinieren.
| |
grayScale:Boolean (default = false ) — Ein boolescher Wert. Ist der Wert true , wird durch die Einstellung aller Farbkanäle auf den gleichen Wert ein Graustufenbild erstellt. Der Wert des Alphakanals ist von der Einstellung dieses Parameters auf true nicht betroffen.
|
Verwandte API-Elemente
flash.display.BitmapDataChannel.BLUE
flash.display.BitmapDataChannel.GREEN
flash.display.BitmapDataChannel.ALPHA
Beispiel ( Verwendung dieses Beispiels )
noise()
-Methode aufgerufen wird. Der Parameter grayscale
wird jedoch auf false
gesetzt, um den Aufruf der noise()
-Methode des ersten Objekts durchzuführen, und er wird auf true
gesetzt, um den Aufruf der noise()
-Methode des zweiten Objekts durchzuführen:
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 | () | Methode |
public function paletteMap(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Ordnet die Farbkanalwerte in einem Bild mit maximal vier Arrays von Farbpalettendaten neu zu, wobei die einzelnen Arrays jeweils einen Kanal darstellen.
Flash-Laufzeitumgebungen verwenden die folgenden Schritte, um das resultierende Bild zu erzeugen:
- Nach der Berechnung der einzelnen Werte für Rot, Grün, Blau und Alpha werden diese mithilfe einer standardisierten 32-Bit-Ganzzahlarithmetik addiert.
- Die Kanalwerte jedes Pixels für Rot, Grün, Blau und Alpha werden in einzelne Werte zwischen 0 und 255 extrahiert. Mithilfe dieser Werte werden dann die neuen Farbwerte im entsprechenden Array ermittelt:
redArray
,greenArray
,blueArray
undalphaArray
. Jedes dieser vier Arrays sollte 256 Werte enthalten. - Nach der Ermittlung der neuen Kanalwerte werden diese in einem ARGB-Standardwert zusammengefasst, der auf das Pixel angewendet wird.
Mit dieser Methode können auch kanalübergreifende Effekte unterstützt werden. Jedes Eingabe-Array kann dabei vollständige 32-Bit-Werte enthalten, und beim Addieren der Werte treten keine Verschiebungen auf. Allerdings unterstützt diese Routine keine Festsetzung pro Kanal.
Wird für einen Kanal kein Array angegeben, wird der Farbkanal vom Quellbild in das Zielbild kopiert.
Diese Methode kann für eine ganze Reihe von Effekten genutzt werden, wie zum Beispiel eine allgemeine Palettenzuordnung (Auswählen einzelner Kanäle und deren Umwandlung in ein Falschfarbenbild). Sie können diese Methode auch für eine Reihe von komplexen Farbänderungsalgorithmen verwenden, z. B. Gamma, Kurven, Ebenen und Quantisierung.
Parameter
sourceBitmapData:BitmapData — Die als Eingabe verwendete Bitmap. Das Quellbild kann ein anderes BitmapData-Objekt oder ein Verweis auf die aktuelle BitmapData-Instanz sein.
| |
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
destPoint:Point — Der Punkt innerhalb des Zielbilds (das aktuelle BitmapData-Objekt), der der linken oberen Ecke des Quellrechtecks entspricht.
| |
redArray:Array (default = null ) — Wenn redArray nicht null ist, gilt red = redArray[source red value] else red = source rect value .
| |
greenArray:Array (default = null ) — Wenn greenArray nicht null ist, gilt green = greenArray[source green value] else green = source green value .
| |
blueArray:Array (default = null ) — Wenn blueArray nicht null ist, gilt blue = blueArray[source blue value] else blue = source blue value .
| |
alphaArray:Array (default = null ) — Wenn alphaArray nicht null ist, gilt alpha = alphaArray[source alpha value] else alpha = source alpha value .
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“ oder „destPoint“ haben den Wert null.
|
Beispiel ( Verwendung dieses Beispiels )
paletteMap()
-Methode verwendet, um in der unteren rechteckigen Hälfte des BitmapData-Objekts Rot durch Grün zu ersetzen:
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 | () | Methode |
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
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Erstellt ein Perlin-Störungsbild.
Der Perlin-Störungsalgorithmus interpoliert und kombiniert mehrere zufällige als Oktaven bezeichnete Störungsfunktionen in einer Funktion, die natürlicher wirkende Zufallsstörungen erzeugt. Genau wie in der Musik weist auch hier jede Oktavenfunktion die doppelte Frequenz der jeweils untergeordneten Oktave auf. Die Perlin-Störungen werden als „Fraktalsumme der Störungen“ bezeichnet, da sie mehrere Arten von Störungsdaten unterschiedlicher Detailstufen zusammenfassen.
Durch Anwendung von Perlin-Störungsfunktionen können Naturphänomene und Landschaften simuliert werden, wie Holzmaserung, Wolken oder Bergketten. Zumeist werden die Ergebnisse einer Perlin-Störungsfunktion nicht direkt angezeigt, sondern dienen zur Optimierung anderer Bilder sowie zum Erzeugen von pseudo-zufälligen Variationen.
Einfache digital-zufällige Störungsfunktionen produzieren häufig Bilder mit scharfen Kontrasten, die in der Natur aber nicht allzu häufig vorkommen. Der Perlin-Störungsalgorithmus arbeitet mit einer Überlagerung von mehreren Störungsfunktionen mit unterschiedlicher Detailstufe und erzielt damit glattere Werteänderungen bei benachbarten Pixeln.
Parameter
baseX:Number — Häufigkeit der Verwendung in x-Richtung. Übergeben Sie zur Erstellung einer Störung für ein Bild der Größe 64 x 128 Pixel als baseX -Wert beispielsweise die Zahl 64.
| |
baseY:Number — Häufigkeit der Verwendung in y-Richtung. Übergeben Sie zur Erstellung einer Störung für ein Bild der Größe 64 x 128 Pixel als baseY -Wert beispielsweise die Zahl 128.
| |
numOctaves:uint — Anzahl der Oktaven bzw. einzelnen Störungsfunktionen die zur Erstellung der Störung kombiniert werden. Größere Anzahlen führen zur Erstellung von detaillierteren Bildern. Allerdings benötigen größere Oktavenanzahlen auch mehr Verarbeitungszeit.
| |
randomSeed:int — Der zu verwendende Anfangswert für den Zufallsgenerator. Wenn Sie alle anderen Parameter beibehalten, können Sie nur durch Änderung dieses Anfangswerts unterschiedliche pseudo-zufällige Ergebnisse erzielen. Bei der Perlin-Störungsfunktion handelt es sich nicht um einen echten Zufallszahlengenerator, sondern eher um eine Zuordnungsfunktion, die mit gleich bleibendem Anfangswert immer dasselbe Ergebnis liefert.
| |
stitch:Boolean — Ein boolescher Wert. Ist der Wert true , werden die Übergänge des Bilds geglättet, um einen nahtlosen Texturenübergang für Füllmuster zu erstellen, mit denen Bitmaps gefüllt werden können.
| |
fractalNoise:Boolean — Ein boolescher Wert. Ist der Wert true , wird eine fraktale Störung erzeugt, ansonsten eine Turbulenz. In einem Bild mit Turbulenzen gibt es sichtbare Bruchstellen in den Farbverläufen, die sich gut für scharf abgegrenzte visuelle Effekte eignen, wie Flammen oder Wellen.
| |
channelOptions:uint (default = 7 ) — Eine Zahl als beliebige Kombination der vier Farbkanalwerte (BitmapDataChannel.RED , BitmapDataChannel.BLUE , BitmapDataChannel.GREEN und BitmapDataChannel.ALPHA ). Sie können die Kanalwerte auch mithilfe des logischen OR-Operators (| ) kombinieren.
| |
grayScale:Boolean (default = false ) — Ein boolescher Wert. Ist der Wert true , wird durch die Einstellung aller Werte für Rot, Grün und Blau auf den gleichen Wert ein Graustufenbild erstellt. Der Wert von Alpha ist nicht betroffen, wenn dieser Wert auf true gesetzt ist.
| |
offsets:Array (default = null ) — Ein Array von Punkten, die dem x- und y-Offset jeder einzelnen Oktave entsprechen. Durch Änderung der Offset-Werte können Sie bei perlinNoise-Bildern glatte Ebenenübergänge erzielen. Jeder Punkt im Offset-Array bezieht sich auf eine bestimmte Oktavenstörfunktion.
|
Beispiel ( Verwendung dieses Beispiels )
perlinNoise()
-Methode aufruft, um einen roten und blauen Wasserfarbeneffekt zu erzielen:
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 | () | Methode |
public function pixelDissolve(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Führt eine Pixelauflösung von einem Quellbild zu einem Zielbild oder anhand desselben Bilds durch. Flash-Laufzeitumgebungen verwenden einen randomSeed
-Wert, um eine zufällige Pixelauflösung zu erzeugen. Der Rückgabewert dieser Funktion muss bei nachfolgenden Aufrufen übergeben werden, um die Pixelauflösung bis zum Ende beizubehalten.
Stimmen Quell- und Zielbild nicht überein, werden die Pixel vom Quellbild mit all ihren Eigenschaften in das Zielbild kopiert. Dieser Vorgang ermöglicht das Anfüllen mit Pixeln von einem leeren Bild zu einem vollständig ausgefüllten Bild.
Falls das Quell- und das Zielbild identisch sind, werden die Pixel mit dem Parameter color
gefüllt. Dieser Vorgang ermöglicht ein Auflösen eines vollständig angefüllten Bilds. In diesem Modus wird der Zielparameter point
ignoriert.
Parameter
sourceBitmapData:BitmapData — Die als Eingabe verwendete Bitmap. Das Quellbild kann ein anderes BitmapData-Objekt oder ein Verweis auf die aktuelle BitmapData-Instanz sein.
| |
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
destPoint:Point — Der Punkt innerhalb des Zielbilds (die aktuelle BitmapData-Instanz), der der linken oberen Ecke des Quellrechtecks entspricht.
| |
randomSeed:int (default = 0 ) — Der Anfangswert des Zufallsgenerators für die Pixelauflösung.
| |
numPixels:int (default = 0 ) — Der Standardwert beträgt 1/30 des Quellbereichs (Breite x Höhe).
| |
fillColor:uint (default = 0 ) — Ein ARGB-Farbwert, mit dem Sie die Pixel anfüllen können, deren Quellwerte mit den Zielwerten übereinstimmen.
|
int — Der neue Anfangswert für den Zufallsgenerator für nachfolgende Aufrufe.
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“ oder „destPoint“ haben den Wert null.
| |
TypeError — Der Wert von „numPixels“ ist negativ.
|
Beispiel ( Verwendung dieses Beispiels )
pixelDissolve()
-Methode ein graues BitmapData-Objekt durch Auflösung in Schritten von je 40 Pixeln in ein rotes Objekt umgewandelt, bis die Farbe aller Pixel geändert wurde:
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 | () | Methode |
public function scroll(x:int, y:int):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Führt für ein Bild einen Bildlauf anhand eines bestimmten Pixelbetrags (x, y) durch. Die Randzonen außerhalb des Bildlaufbereichs bleiben unverändert.
Parameter
x:int — Der Betrag, um den ein horizontaler Bildlauf durchgeführt werden soll.
| |
y:int — Der Betrag, um den ein vertikaler Bildlauf durchgeführt werden soll.
|
Beispiel ( Verwendung dieses Beispiels )
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 | () | Methode |
public function setPixel(x:int, y:int, color:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Legt den Farbwert eines einzelnen Pixels eines BitmapData-Objekts fest. Der aktuelle Alphakanalwert des Bildpixels bleibt während dieses Vorgangs erhalten. Der Wert des RGB-Farbparameters wird als nicht multiplizierter Farbwert angesehen.
Hinweis: Um die Performance zu verbessern, wenn Sie die Methode setPixel()
oder setPixel32()
wiederholt verwenden, rufen Sie die lock()
-Methode auf, bevor Sie die Methode setPixel()
oder setPixel32()
aufrufen. Rufen Sie anschließend die unlock()
-Methode auf, nachdem Sie alle Pixeländerungen vorgenommen haben. Dieser Vorgang verhindert, dass Objekte, die auf diese BitmapData-Instanz verweisen, erst aktualisiert werden, wenn Sie die Pixeländerungen abgeschlossen haben.
Parameter
x:int — Die x-Position des Pixels, dessen Wert geändert wird.
| |
y:int — Die y-Position des Pixels, dessen Wert geändert wird.
| |
color:uint — Die resultierende RGB-Farbe für das Pixel.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
setPixel()
-Methode in einem BitmapData-Objekt eine rote Linie gezeichnet:
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 | () | Methode |
public function setPixel32(x:int, y:int, color:uint):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Legt den Farb- und Alphatransparenzwert eines einzelnen Pixels eines BitmapData-Objekts fest. Diese Methode ähnelt der setPixel()
-Methode. Der Hauptunterschied besteht darin, dass die setPixel32()
-Methode einen ARGB-Farbwert mit Alphakanaldaten als Eingabe benötigt.
Sämtliche Pixel eines BitmapData-Objekts werden als vormultiplizierte Farbwerte gespeichert. Bei diesen vormultiplizierten Bildpixeln sind die Farbkanalwerte für Rot, Grün und Blau bereits mit den Alphadaten multipliziert worden. Wenn also beispielsweise der Alphawert 0 (null) ist, lauten die Werte der RGB-Kanäle, unabhängig von ihren ursprünglichen Werten, ebenfalls 0 (null). Bei bestimmten Vorgängen kann dieser Datenverlust zu Problemen führen. Alle BitmapData-Methoden akzeptieren nicht multiplizierte Werte und geben diese auch zurück. Vor der Rückgabe der Werte wird die interne Pixeldarstellung von vormultipliziert in nicht multipliziert konvertiert. Vor dem Einstellen der Pixelrohdaten des Bilds wird der Pixelwert im Verlauf einer set-Operation vormultipliziert.
Hinweis: Um die Performance zu verbessern, wenn Sie die Methode setPixel()
oder setPixel32()
wiederholt verwenden, rufen Sie die lock()
-Methode auf, bevor Sie die Methode setPixel()
oder setPixel32()
aufrufen. Rufen Sie anschließend die unlock()
-Methode auf, nachdem Sie alle Pixeländerungen vorgenommen haben. Dieser Vorgang verhindert, dass Objekte, die auf diese BitmapData-Instanz verweisen, erst aktualisiert werden, wenn Sie die Pixeländerungen abgeschlossen haben.
Parameter
x:int — Die x-Position des Pixels, dessen Wert geändert wird.
| |
y:int — Die y-Position des Pixels, dessen Wert geändert wird.
| |
color:uint — Die resultierende ARGB-Farbe für das Pixel. Ist die Bitmap undurchsichtig (also nicht transparent), wird der Alphatransparenzwert in diesem Farbwert ignoriert.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
setPixel32()
-Methode in einem BitmapData-Objekt eine transparente rote Linie gezeichnet (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 | () | Methode |
public function setPixels(rect:Rectangle, inputByteArray:ByteArray):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Erzeugt ein Byte-Array aus einem rechteckigen Bereich mit Pixeldaten. Für jedes Pixel wird die ByteArray.readUnsignedInt()
-Methode aufgerufen, und der Rückgabewert wird in das Pixel geschrieben. Endet das Byte-Array, bevor das gesamte Rechteck geschrieben ist, gibt die Funktion den Wert zurück. Im Byte-Array werden als Daten 32-Bit-ARGB-Pixelwerte erwartet. Bevor oder nachdem die Pixel gelesen werden, wird im Byte-Array keine Suche durchgeführt.
Parameter
rect:Rectangle — Legt den rechteckigen Bereich des BitmapData-Objekts fest.
| |
inputByteArray:ByteArray — Ein ByteArray-Objekt, das aus nicht multiplizierten 32-Bit-Pixelwerten besteht, die im rechteckigen Bereich verwendet werden sollen.
|
Auslöser
EOFError — Das inputByteArray -Objekt enthält nicht genügend Daten, um den Bereich des rect -Rechtecks zu füllen. Die Methode füllt so viele Pixel wie möglich, bevor die Ausnahme ausgelöst wird.
| |
TypeError — „rect“ oder „inputByteArray“ haben den Wert null.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
getPixels()
und setPixels()
Pixel aus einem BitmapData-Objekt in ein anderes kopiert:
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 | () | Methode |
public function setVector(rect:Rectangle, inputVector:Vector.<uint>):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Konvertiert einen Vektor in einen rechteckigen Bereich mit Pixeldaten. Pro Pixel wird ein Vector-Element gelesen und in das BitmapData-Pixel geschrieben. Im Vector werden als Daten 32-Bit-ARGB-Pixelwerte erwartet.
Parameter
rect:Rectangle — Legt den rechteckigen Bereich des BitmapData-Objekts fest.
| |
inputVector:Vector.<uint> — Ein Vector-Objekt, das aus nicht multiplizierten 32-Bit-Pixelwerten besteht, die im rechteckigen Bereich verwendet werden.
|
Auslöser
RangeError — Das Vectorarray ist nicht groß genug, um alle Pixeldaten zu lesen.
|
threshold | () | Methode |
public function threshold(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point, operation:String, threshold:uint, color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Prüft die Pixelwerte eines Bilds für einen angegebenen Schwellenwert und weist den Pixeln, die die Bedingung des Tests erfüllen, neue Farbwerte zu. Mithilfe der threshold()
-Methode können Sie in einem Bild ganze Farbbereiche isolieren und ersetzen sowie andere logische Operationen auf Bildpixel anwenden.
Die Testlogik der threshold()
-Methode lautet wie folgt:
- Wenn
((pixelValue & mask) operation (threshold & mask))
gilt, wird das Pixel aufcolor
gesetzt. - Wenn hingegen
copySource == true
gilt, wird das Pixel auf den entsprechenden Pixelwert aussourceBitmap
gesetzt.
Der Parameter operation
gibt den Vergleichsoperator für den Schwellentest an. Wenn Sie beispielsweise „==“ als operation
-Parameter eingeben, können Sie in einem Bild eine Farbe mit einem bestimmten Wert isolieren. Oder wenn Sie {operation: "<", mask: 0xFF000000, threshold: 0x7F000000, color: 0x00000000}
verwenden, können Sie alle Pixel im Zielbild auf vollständig transparent einstellen, wenn der Alphawert des Quellbildpixels kleiner als 0x7F ist. Sie können dieses Verfahren für animierte Übergänge und andere Effekte verwenden.
Parameter
sourceBitmapData:BitmapData — Die als Eingabe verwendete Bitmap. Das Quellbild kann ein anderes BitmapData-Objekt oder ein Verweis auf die aktuelle BitmapData-Instanz sein.
| |
sourceRect:Rectangle — Ein Rechteck, mit dem der Bereich des als Eingabe zu verwendenden Quellbilds definiert wird.
| |
destPoint:Point — Der Punkt innerhalb des Zielbilds (die aktuelle BitmapData-Instanz), der der linken oberen Ecke des Quellrechtecks entspricht.
| |
operation:String — Einer der folgenden Vergleichsoperatoren, der als String übergeben wird: „<“, „<=“, „>“, „>=“, „==“, „!=“
| |
threshold:uint — Der Wert, auf den jedes Pixel geprüft wird, um festzustellen, ob der Schwellenwert eingehalten oder überschritten wird.
| |
color:uint (default = 0 ) — Der Farbwert, auf den ein Pixel gesetzt wird, falls der Schwellentest erfolgreich ist. Der Standardwert lautet 0x00000000.
| |
mask:uint (default = 0xFFFFFFFF ) — Die Maske, die zum Isolieren einer Farbkomponente verwendet wird.
| |
copySource:Boolean (default = false ) — Lautet der Wert true , werden Pixelwerte aus dem Quellbild auch in das Zielobjekt kopiert, wenn der Schwellentest fehlschlägt. Lautet der Wert false , wird das Quellbild nicht kopiert, wenn der Schwellentest fehlschlägt.
|
uint — Die Anzahl der geänderten Pixel.
|
Auslöser
TypeError — „sourceBitmapData“, „sourceRect“, „destPoint“ oder „operation“ haben den Wert null.
| |
ArgumentError — Der operation-String ist keine zulässige Operation.
|
Beispiel ( Verwendung dieses Beispiels )
perlinNoise()
-Methode einem BitmapData-Objekt ein blaues und rotes Muster hinzugefügt und anschließend die threshold()
-Methode verwendet, um die entsprechenden Pixel aus dem ersten BitmapData-Objekt in ein zweites Objekt zu kopieren. Dabei werden die Pixel, bei denen der Rotwert größer als 0x80 (50 %) ist, durch ein Pixel mit transparentem Rot (0x20FF0000) ersetzt:
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 | () | Methode |
public function unlock(changeRect:Rectangle = null):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 9, AIR 1.0 |
Entsperrt ein Bild, sodass Objekte, die auf das BitmapData-Objekt verweisen, z. B. Bitmap-Objekte, aktualisiert werden, wenn sich dieses BitmapData-Objekt ändert. Um die Performance zu verbessern, verwenden Sie diese Methode zusammen mit der lock()
-Methode vor und nach mehreren Aufrufen der Methode setPixel()
oder setPixel32()
.
Parameter
changeRect:Rectangle (default = null ) — Der Bereich des BitmapData-Objekts, der sich geändert hat. Wenn Sie für diesen Parameter keinen Wert angeben, wird der gesamte Bereich des BitmapData-Objekts als geändert betrachtet. Dieser Parameter erfordert Flash Player 9.0.115.0 oder höher.
|
Verwandte API-Elemente
Beispiel ( Verwendung dieses Beispiels )
bitmapData
-Eigenschaft eines Bitmap-Objekts (picture
) erstellt. Das Objekt ruft dann die lock()
-Methode auf, bevor eine komplizierte benutzerdefinierte Funktion (complexTransformation()
) aufgerufen wird, die das BitmapData-Objekt ändert. (Das picture
-Objekt und die complexTransformation()
-Funktion sind in diesem Beispiel nicht definiert.) Auch wenn die complexTransformation()
-Funktion die bitmapData
-Eigenschaft des picture
-Objekts aktualisiert, werden die Änderungen erst wirksam, wenn der Code die unlock()
-Methode des bitmapData
-Objekts aufruft:
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
threshold()
-Methode bestanden haben. Dies wird in den folgenden Schritten erreicht:
- Es wird eine
url
-Eigenschaft erstellt, die den Speicherort und Namen der Grafikdatei angibt. - Der Klassenkonstruktor erstellt ein Loader-Objekt, das dann einen Ereignis-Listener instanziiert. Der Ereignis-Listener wird ausgelöst, wenn die
completeHandler()
-Methode die Bildbearbeitung abgeschlossen hat. - Anschließend wird das
request
-URLRequest-Objekt anloader.load()
übergeben, um das Bild mit einem Anzeigeobjekt in den Speicher zu laden. - Das Bild wird in die Anzeigeliste eingefügt, die das Bild auf dem Bildschirm bei den Koordinaten x = 0, y = 0 anzeigt.
- Die
completeHandler()
-Methode führt dann Folgendes aus:- Sie erstellt zusammen mit einem Bitmap-Objekt einen zweiten „Loader“, der über das Loader-Objekt initialisiert wird.
- Sie erstellt ein zweites Bitmap-Objekt,
duplicate
, das wiederum dieduplicateImage()
-Methode aufruft, die ein Duplikat des Originalbilds erzeugt. - Sie erstellt ein BitmapData-Objekt, das dem BitmapData-Objekt des
duplicate
-Objekts zugeordnet ist. - Sie erstellt ein neues Rechteckobjekt, das mit denselben Werten für Koordinaten, Breite und Höhe wie das Originalbild initialisiert wird.
- Sie erstellt ein neues Point-Objekt mit der Standardeinstellung x = 0, y = 0.
- Sie erstellt die folgenden Variablen:
operation
: Wendet die neue Farbe an, wenn der Schwellenwert größer oder gleich dem Original ist.threshold
: Der Wert, mit dem jedes Pixel verglichen wird (in diesem Beispiel Hellgrau mit einem Alphawert von 0xCC).color
: Die Farbe, auf die die Pixel eingestellt sind, die den Schwellentest bestehen. In diesem Fall ist dies reines Gelb.mask
: Die genau entgegengesetzte Farbe (durchsichtiges Blau).copySource
: Ist auffalse
gesetzt, um anzuzeigen, dass die Pixelwerte nicht kopiert werden, wenn der Schwellenwert den Test nicht besteht. Dieser Wert hat keine Bedeutung, da das Bild dupliziert wird und nur Pixel geändert werden, die den Schwellenwerttest bestehen.
- Ruft mithilfe der vorherigen Variablen die
threshold()
-Methode auf. Es ergibt sich die folgende Schwellenwertgleichung:if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00
.
Hinweise:
- Für die Kompilierung der SWF-Datei müssen Sie die Option „Sicherheit bei lokaler Wiedergabe“ auf „Nur auf lokale Dateien zugreifen“ einstellen.
- Zur Ausführung dieses Beispiels müssen Sie eine Datei mit dem Namen „Image.gif“ in dem Ordner ablegen, in dem sich die SWF-Datei befindet.
- Es wird empfohlen, eine Grafik mit einer Breite von bis zu etwa 80 Pixel zu verwenden.
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); } } }
Tue Jun 12 2018, 10:04 AM Z