Paket | flash.geom |
Klasse | public class Rectangle |
Vererbung | Rectangle Object |
Unterklassen | RoundedRectangle |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die Eigenschaften x
, y
, width
und height
der Rectangle-Klasse sind voneinander unabhängig. Eine Wertänderung einer dieser Eigenschaften hat keinen Einfluss auf die anderen Eigenschaften. Die Eigenschaften right
und bottom
stehen jedoch im unmittelbaren Bezug zu diesen vier Eigenschaften. Wenn Sie beispielsweise den Wert der right
-Eigenschaft ändern, ändert sich auch der Wert der width
-Eigenschaft. Bei einer Änderung der bottom
-Eigenschaft ändert sich auch der Wert der height
-Eigenschaft.
Bei den folgenden Methoden und Eigenschaften werden Rectangle-Objekte verwendet:
- Die Methoden
applyFilter()
,colorTransform()
,copyChannel()
,copyPixels()
,draw()
,fillRect()
,generateFilterRect()
,getColorBoundsRect()
,getPixels()
,merge()
,paletteMap()
,pixelDisolve()
,setPixels()
undthreshold()
sowie dierect
-Eigenschaft der BitmapData-Klasse - die Methoden
getBounds()
undgetRect()
sowie die EigenschaftenscrollRect
undscale9Grid
der DisplayObject-Klasse - die Methode
getCharBoundaries()
der TextField-Klasse - die Eigenschaft
pixelBounds
der Transform-Klasse - der Parameter
bounds
derstartDrag()
-Methode der Sprite-Klasse - der Parameter
printArea
deraddPage()
-Methode der PrintJob-Klasse
Mit dem new Rectangle()
-Konstruktor können Sie ein Rectangle-Objekt erstellen.
Hinweis: Mit der Rectangle-Klasse wird kein rechteckiges Shape-Anzeigeobjekt definiert. Wenn Sie ein rechteckiges Shape-Objekt zeichnen möchten, verwenden Sie die drawRect()
-Methode der Graphics-Klasse.
Verwandte API-Elemente
flash.display.BitmapData
flash.display.DisplayObject
flash.display.NativeWindow
flash.text.TextField.getCharBoundaries()
flash.geom.Transform.pixelBounds
flash.display.Sprite.startDrag()
flash.printing.PrintJob.addPage()
Eigenschaft | Definiert von | ||
---|---|---|---|
bottom : Number
Die Summe der Eigenschaften y und height. | Rectangle | ||
bottomRight : Point
Die Position der rechten unteren Ecke des Rectangle-Objekts, definiert durch die Werte der Eigenschaften right und bottom. | Rectangle | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
height : Number
Die Höhe des Rechtecks in Pixel. | Rectangle | ||
left : Number
Die x-Koordinate der linken oberen Ecke des Rechtecks. | Rectangle | ||
right : Number
Die Summe der Eigenschaften x und width. | Rectangle | ||
size : Point
Die Größe des Rectangle-Objekts, ausgedrückt als Point-Objekt, mit den Werten der Eigenschaften width und height. | Rectangle | ||
top : Number
Die y-Koordinate der linken oberen Ecke des Rechtecks. | Rectangle | ||
topLeft : Point
Die Position der linken oberen Ecke des Rectangle-Objekts, die durch den x- und y-Wert des Punkts angegeben wird. | Rectangle | ||
width : Number
Die Breite des Rechtecks in Pixel. | Rectangle | ||
x : Number
Die x-Koordinate der linken oberen Ecke des Rechtecks. | Rectangle | ||
y : Number
Die y-Koordinate der linken oberen Ecke des Rechtecks. | Rectangle |
Methode | Definiert von | ||
---|---|---|---|
Erstellt ein neues Rectangle-Objekt mit der angegebenen Breite und Höhe, dessen linke obere Ecke durch die Parameter x und y festgelegt ist. | Rectangle | ||
Gibt ein neues Rectangle-Objekt mit denselben Werten für die Eigenschaften „x“, „y“, „width“ und „height“ wie die des ursprünglichen Rectangle-Objekts zurück. | Rectangle | ||
Legt fest, ob der angegebene Punkt innerhalb des rechteckigen Bereichs liegt, der durch das Rectangle-Objekt definiert ist. | Rectangle | ||
Legt fest, ob der angegebene Punkt innerhalb des rechteckigen Bereichs liegt, der durch das Rectangle-Objekt definiert ist. | Rectangle | ||
Legt fest, ob sich das von dem Parameter „rect“ angegebene Rectangle-Objekt innerhalb dieses Rectangle-Objekts befindet. | Rectangle | ||
Kopiert alle Rechteckdaten aus dem Rectangle-Quellobjekt in das aufrufende Rectangle-Objekt. | Rectangle | ||
Bestimmt, ob das im Parameter „toCompare“ angegebene Objekt und dieses Rectangle-Objekt gleich sind. | Rectangle | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Vergrößert das Rectangle-Objekt um die in Pixeln angegebenen Werte. | Rectangle | ||
Ändert die Größe des Rectangle-Objekts. | Rectangle | ||
Wenn sich das im Parameter toIntersect angegebene Rectangle-Objekt mit diesem Rectangle-Objekt überschneidet, gibt die Methode die Schnittfläche als Rectangle-Objekt zurück. | Rectangle | ||
Legt fest, ob sich das im Parameter „toIntersect“ angegebene Objekt mit diesem Rectangle-Objekt überschneidet. | Rectangle | ||
Legt fest, ob dieses Rectangle-Objekt leer ist. | Rectangle | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Ändert die Position des Rectangle-Objekts ausgehend von seiner oberen linken Ecke um die angegebenen Beträge. | Rectangle | ||
Ändert die Position des Rectangle-Objekts, wobei ein Point-Objekt als Parameter dient. | Rectangle | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Setzt alle Eigenschaften des Rectangle-Objekts auf 0. | Rectangle | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Legt die Mitglieder des Rectangle-Objekts auf die angegebenen Werte fest
| Rectangle | ||
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas. | Object | ||
Erstellt und übergibt einen String, der die horizontalen und vertikalen Positionen sowie die Breite und Höhe des Rectangle-Objekts enthält. | Rectangle | ||
Vereinigt zwei Rechtecke miteinander, indem der vertikale und horizontale Bereich zwischen ihnen gefüllt wird, sodass ein neues Rectangle-Objekt entsteht. | Rectangle | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object |
bottom | Eigenschaft |
bottomRight | Eigenschaft |
bottomRight:Point
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die Position der rechten unteren Ecke des Rectangle-Objekts, die durch die Werte der Eigenschaften right
und bottom
angegeben wird.
Implementierung
public function get bottomRight():Point
public function set bottomRight(value:Point):void
Verwandte API-Elemente
height | Eigenschaft |
left | Eigenschaft |
left:Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die x-Koordinate der oberen linken Ecke des Rechtecks. Änderungen der Eigenschaft left
eines Rectangle-Objekts wirken sich nicht auf die Eigenschaften y
und height
aus. Sie wirken sich jedoch auf die Eigenschaft width
aus; Änderungen des Werts x
betreffen dagegen nicht die Eigenschaft width
.
Der Wert der Eigenschaft left
entspricht dem Wert der Eigenschaft x
.
Implementierung
public function get left():Number
public function set left(value:Number):void
Verwandte API-Elemente
right | Eigenschaft |
size | Eigenschaft |
size:Point
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die Größe des Rectangle-Objekts, ausgedrückt als Point-Objekt, mit width
- und height
-Werten.
Implementierung
public function get size():Point
public function set size(value:Point):void
Verwandte API-Elemente
top | Eigenschaft |
top:Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die y-Koordinate der linken oberen Ecke des Rechtecks. Änderungen der Eigenschaft top
eines Rectangle-Objekts wirken sich nicht auf die Eigenschaften x
und width
aus. Sie wirken sich jedoch auf die Eigenschaft height
aus; Änderungen des Werts y
betreffen dagegen nicht die Eigenschaft height
.
Der Wert der Eigenschaft top
entspricht dem Wert der Eigenschaft y
.
Implementierung
public function get top():Number
public function set top(value:Number):void
Verwandte API-Elemente
topLeft | Eigenschaft |
topLeft:Point
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die Position der linken oberen Ecke des Rectangle-Objekts, die durch die x- und y-Koordinate des Punkts angegeben wird.
Implementierung
public function get topLeft():Point
public function set topLeft(value:Point):void
Verwandte API-Elemente
width | Eigenschaft |
x | Eigenschaft |
public var x:Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die x-Koordinate der oberen linken Ecke des Rechtecks. Änderungen des Werts der Eigenschaft x
eines Rectangle-Objekts wirken sich nicht auf die Eigenschaften y
, width
und height
aus.
Der Wert der Eigenschaft x
entspricht dem Wert der Eigenschaft left
.
Verwandte API-Elemente
y | Eigenschaft |
public var y:Number
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Die y-Koordinate der linken oberen Ecke des Rechtecks. Änderungen des Werts der Eigenschaft y
eines Rectangle-Objekts wirken sich nicht auf die Eigenschaften x
, width
und height
aus.
Der Wert der Eigenschaft y
entspricht dem Wert der Eigenschaft top
.
Verwandte API-Elemente
Rectangle | () | Konstruktor |
public function Rectangle(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0)
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Erstellt ein neues Rectangle-Objekt, dessen linke obere Ecke durch die Parameter x
und y
festgelegt ist, und mit den angegebenen width
- und height
-Parametern. Wenn Sie diese Funktion ohne Parameter aufrufen, wird ein Rechteck erstellt, bei dem die Eigenschaftenx
, y
, width
und height
auf 0 gesetzt sind.
x:Number (default = 0 ) — Die x-Koordinate der oberen linken Ecke des Rechtecks.
| |
y:Number (default = 0 ) — Die y-Koordinate der linken oberen Ecke des Rechtecks.
| |
width:Number (default = 0 ) — Die Breite des Rechtecks in Pixel.
| |
height:Number (default = 0 ) — Die Höhe des Rechtecks in Pixel.
|
Verwandte API-Elemente
clone | () | Methode |
public function clone():Rectangle
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Gibt ein neues Rectangle-Objekt mit den gleichen Werten x
, y
, width
und height
wie die des ursprünglichen Rectangle-Objekts zurück.
Rectangle — Ein neues Rectangle-Objekt mit den gleichen Werten für die Eigenschaften x , y , width und height wie die des ursprünglichen Rectangle-Objekts.
|
Verwandte API-Elemente
contains | () | Methode |
public function contains(x:Number, y:Number):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legt fest, ob der angegebene Punkt innerhalb des rechteckigen Bereichs liegt, der durch das Rectangle-Objekt definiert ist.
Parameter
x:Number — Die x-Koordinate (horizontale Position) des Punkts.
| |
y:Number — Die y-Koordinate (vertikale Position) des Punkts.
|
Boolean — Der Wert true , wenn das Rectangle-Objekt den angegebenen Punkt enthält, andernfalls false .
|
Verwandte API-Elemente
containsPoint | () | Methode |
public function containsPoint(point:Point):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legt fest, ob der angegebene Punkt innerhalb des rechteckigen Bereichs liegt, der durch das Rectangle-Objekt definiert ist. Diese Methode entspricht der Methode Rectangle.contains()
, das Point-Objekt wird jedoch als Parameter angenommen.
Parameter
point:Point — Der Punkt, der durch die x- und y-Koordinaten angegeben wird.
|
Boolean — Der Wert true , wenn das Rectangle-Objekt den angegebenen Punkt enthält, andernfalls false .
|
Verwandte API-Elemente
containsRect | () | Methode |
public function containsRect(rect:Rectangle):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legt fest, ob sich das von dem Parameter rect
angegebene Rectangle-Objekt innerhalb dieses Rectangle-Objekts befindet. Ein Rechteck enthält ein anderes Rechteck, wenn Letzteres vollständig innerhalb der Grenzen des Ersteren liegt.
Parameter
rect:Rectangle — Das überprüfte Rectangle-Objekt.
|
Boolean — Der Wert true , wenn das angegebene Rectangle-Objekt in diesem Rectangle-Objekt enthalten ist, andernfalls false .
|
copyFrom | () | Methode |
public function copyFrom(sourceRect:Rectangle):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Kopiert alle Rechteckdaten aus dem Rectangle-Quellobjekt in das aufrufende Rectangle-Objekt.
Parameter
sourceRect:Rectangle — Das Rectangle-Objekt, aus dem die Daten kopiert werden.
|
equals | () | Methode |
public function equals(toCompare:Rectangle):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legt fest, ob das im Parameter toCompare
angegebene Objekt und dieses Rectangle-Objekt gleich sind. Bei dieser Methode wird ein Objekt anhand der gleichen Eigenschaften x
, y
, width
und height
mit diesem Rectangle-Objekt verglichen.
Parameter
toCompare:Rectangle — Das Rechteck, das mit diesem Rectangle-Objekt verglichen werden soll.
|
Boolean — Der Wert true wenn das Objekt exakt die gleichen Werte für die Parameter x , y , width und height aufweist wie dieses Rectangle-Objekt; andernfalls false .
|
Verwandte API-Elemente
inflate | () | Methode |
public function inflate(dx:Number, dy:Number):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Player 9, Flash Lite 4 |
Vergrößert das Rectangle-Objekt um die in Pixeln angegebenen Werte. Der Mittelpunkt des Rectangle-Objekts bleibt gleich, und die Größe wird mit dem Wert dx
nach links und rechts und mit dem Wert dy
nach oben und unten erweitert.
Parameter
dx:Number — Der Wert, der links und rechts zum Rectangle-Objekt addiert wird. Zur Berechnung der neuen Breite und Position des Rechtecks wird die folgende Gleichung verwendet:
x -= dx; width += 2 * dx; | |
dy:Number — Der Wert, der oben und unten zum Rectangle-Objekt addiert wird. Zur Berechnung der neuen Höhe und Position des Rechtecks wird die folgende Gleichung verwendet:
y -= dy; height += 2 * dy; |
Verwandte API-Elemente
inflatePoint | () | Methode |
public function inflatePoint(point:Point):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ändert die Größe des Rectangle-Objekts. Diese Methode ähnelt der Methode Rectangle.inflate()
, als Parameter wird jedoch ein Point-Objekt verwendet.
Die folgenden beiden Codebeispiele führen zum gleichen Ergebnis:
var rect1:Rectangle = new Rectangle(0,0,2,5); rect1.inflate(2,2)
var rect1:Rectangle = new Rectangle(0,0,2,5); var pt1:Point = new Point(2,2); rect1.inflatePoint(pt1)
Parameter
point:Point — Mit der x -Eigenschaft dieses Point-Objekts wird die horizontale Abmessung des Rectangle-Objekts vergrößert. Mit der y -Eigenschaft wird die vertikale Abmessung des Rectangle-Objekts vergrößert.
|
Verwandte API-Elemente
intersection | () | Methode |
public function intersection(toIntersect:Rectangle):Rectangle
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wenn sich das im Parameter toIntersect
angegebene Rectangle-Objekt mit diesem Rectangle-Objekt überschneidet, gibt die Methode die Schnittfläche als Rectangle-Objekt zurück. Wenn sich die Rechtecke nicht überschneiden, wird mit dieser Methode ein leeres Rectangle-Objekt zurückgegeben, dessen Eigenschaften auf 0 gesetzt sind.
Parameter
toIntersect:Rectangle — Das Rectangle-Objekt, bei dem überprüft werden soll, ob es sich mit diesem Rectangle-Objekt überschneidet.
|
Rectangle — Ein Rectangle-Objekt, das der Schnittfläche entspricht. Wenn sich die Rechtecke nicht überschneiden, wird mit dieser Methode ein leeres Rectangle-Objekt zurückgegeben. Dabei handelt es sich um Rechteck, bei dem die Eigenschaften x , y , width und height auf 0 gesetzt sind.
|
intersects | () | Methode |
public function intersects(toIntersect:Rectangle):Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legt fest, ob sich das im Parameter toIntersect
angegebene Objekt mit diesem Rectangle-Objekt überschneidet. Bei dieser Methode wird anhand der Eigenschaften x
, y
, width
und height
des angegebenen Rectangle-Objekts überprüft, ob es sich mit diesem Rectangle-Objekt überschneidet.
Parameter
toIntersect:Rectangle — Das Rectangle-Objekt, das mit diesem Rectangle-Objekt verglichen werden soll.
|
Boolean — Der Wert true , wenn sich das angegebene Objekt mit dem Rectangle-Objekt überschneidet, andernfalls false .
|
Verwandte API-Elemente
isEmpty | () | Methode |
public function isEmpty():Boolean
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legt fest, ob dieses Rectangle-Objekt leer ist.
RückgabewerteBoolean — Der Wert true , wenn die Breite oder Höhe des Rectangle-Objekts kleiner oder gleich 0 ist, andernfalls false .
|
offset | () | Methode |
public function offset(dx:Number, dy:Number):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ändert die Position des Rectangle-Objekts ausgehend von seiner oberen linken Ecke um die angegebenen Beträge.
Parameter
dx:Number — Verschiebt den Wert x des Rectangle-Objekts um diesen Wert.
| |
dy:Number — Verschiebt den Wert y des Rectangle-Objekts um diesen Wert.
|
offsetPoint | () | Methode |
public function offsetPoint(point:Point):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ändert die Position des Rectangle-Objekts, wobei ein Point-Objekt als Parameter dient. Diese Methode entspricht der Methode Rectangle.offset()
, das Point-Objekt wird jedoch als Parameter angenommen.
Parameter
point:Point — Ein Point-Objekt, mit dem dieses Rectangle-Objekt versetzt werden kann.
|
Verwandte API-Elemente
setEmpty | () | Methode |
public function setEmpty():void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Setzt alle Eigenschaften des Rectangle-Objekts auf 0. Ein Rectangle-Objekt ist leer, wenn seine Breite oder Höhe kleiner oder gleich 0 ist.
Diese Methode setzt die Werte der Eigenschaften x
, y
, width
und height
auf 0.
Verwandte API-Elemente
setTo | () | Methode |
public function setTo(xa:Number, ya:Number, widtha:Number, heighta:Number):void
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Legt die Mitglieder des Rectangle-Objekts auf die angegebenen Werte fest
Parameter
xa:Number — die Werte, auf die das Rechteck gesetzt wird.
| |
ya:Number | |
widtha:Number | |
heighta:Number |
toString | () | Methode |
public function toString():String
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Erstellt und übergibt einen String, der die horizontalen und vertikalen Positionen sowie die Breite und Höhe des Rectangle-Objekts enthält.
RückgabewerteString — Ein String, der die Werte der folgenden Eigenschaften des Rectangle-Objekts angibt: x , y , width und height .
|
Verwandte API-Elemente
union | () | Methode |
public function union(toUnion:Rectangle):Rectangle
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Vereinigt zwei Rechtecke miteinander, indem der vertikale und horizontale Bereich zwischen ihnen gefüllt wird, sodass ein neues Rectangle-Objekt entsteht.
Hinweis: Die union()
-Methode ignoriert Rechtecke mit dem Höhen- oder Breitenwert 0
, wie beispielsweise: var rect2:Rectangle = new Rectangle(300,300,50,0);
Parameter
toUnion:Rectangle — Ein Rectangle-Objekt, das diesem Rectangle-Objekt hinzugefügt wird.
|
Rectangle — Ein neues Rectangle-Objekt aus der Vereinigung der beiden Rechtecke.
|
trace()
-Methode bestätigt. Dann wird die boolesche Variable isContained
dem Ergebnis zugeordnet, das sich aus dem Aufruf der containsRect()
-Methode ergibt. Damit wird festgelegt, dass das dritte Rechteck nicht vollständig vom zweiten Rechteck eingeschlossen wird.
package { import flash.display.Sprite; import flash.geom.Rectangle; public class RectangleExample extends Sprite { public function RectangleExample() { var firstRect:Rectangle = new Rectangle(); trace(firstRect); // (x=0, y=0, w=0, h=0) var secondRect:Rectangle = new Rectangle(1, 3, 11, 13); trace(secondRect); // (x=1, y=3, w=11, h=13) var thirdRect:Rectangle = new Rectangle(5, 8, 17, 19); trace(thirdRect); // (x=5, y=8, w=17, h=19) var isContained:Boolean = secondRect.containsRect(thirdRect); trace(isContained); // false } } }
Tue Jun 12 2018, 10:04 AM Z