Rectangle nesnelerini kullanma

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

Rectangle nesnesi bir dikdörtgen alanını tanımlar. Dikdörtgen nesnesi, sol üst köşesinin x ve y koordinatlarının tanımladığı bir konuma, bir width özelliğine ve height özelliğine sahiptir. Dikdörtgen() yapıcı işlevini aşağıdaki şekilde çağırarak yeni bir Dikdörtgen nesnesi için bu özellikleri tanımlayabilirsiniz:

import flash.geom.Rectangle; 
var rx:Number = 0; 
var ry:Number = 0; 
var rwidth:Number = 100; 
var rheight:Number = 50; 
var rect1:Rectangle = new Rectangle(rx, ry, rwidth, rheight);

Dikdörtgen nesnelerini yeniden boyutlandırma ve yeniden konumlandırma

Rectangle nesnelerini yeniden boyutlandırmanın ve yeniden konumlandırmanın birçok yolu vardır.

x ve y özelliklerini değiştirerek Rectangle nesnesini doğrudan yeniden konumlandırabilirsiniz. Bu değişikliğin, Rectangle nesnesinin genişliği veya yüksekliği üzerinde bir etkisi yoktur.

import flash.geom.Rectangle; 
var x1:Number = 0; 
var y1:Number = 0; 
var width1:Number = 100; 
var height1:Number = 50; 
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); 
trace(rect1) // (x=0, y=0, w=100, h=50) 
rect1.x = 20;  
rect1.y = 30; 
trace(rect1); // (x=20, y=30, w=100, h=50)

Aşağıdaki kodun gösterdiği gibi, Dikdörtgen nesnesinin left veya top özelliğini değiştirdiğinizde dikdörtgen yeniden konumlandırılır. Dikdörtgenin x ve y özellikleri sırasıyla left ve top özellikleriyle eşleşir. Diğer taraftan, Dikdörtgen nesnesinin sol alt köşesinin konumu değişmez; böylece yeniden boyutlandırılmış olur.

import flash.geom.Rectangle; 
var x1:Number = 0; 
var y1:Number = 0; 
var width1:Number = 100; 
var height1:Number = 50; 
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); 
trace(rect1) // (x=0, y=0, w=100, h=50) 
rect1.left = 20;  
rect1.top = 30; 
trace(rect1); // (x=20, y=30, w=80, h=20)

Aynı şekilde, aşağıdaki örnekte gösterildiği gibi dikdörtgen nesnesinin bottom veya right özelliğini değiştirirseniz, sol üst konumu değişmez. Dikdörtgen aşağıdaki gibi yeniden boyutlandırılır:

import flash.geom.Rectangle; 
var x1:Number = 0; 
var y1:Number = 0; 
var width1:Number = 100; 
var height1:Number = 50; 
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); 
trace(rect1) // (x=0, y=0, w=100, h=50) 
rect1.right = 60; 
trect1.bottom = 20;  
trace(rect1); // (x=0, y=0, w=60, h=20)

Aşağıdaki gibi, offset() yöntemini kullanarak da Rectangle nesnesini yeniden konumlandırabilirsiniz:

import flash.geom.Rectangle; 
var x1:Number = 0; 
var y1:Number = 0; 
var width1:Number = 100; 
var height1:Number = 50; 
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); 
trace(rect1) // (x=0, y=0, w=100, h=50) 
rect1.offset(20, 30);  
trace(rect1); // (x=20, y=30, w=100, h=50)

offsetPt() yöntemi benzer şekilde çalışır, tek farkı, x ve y uzaklık değerlerini değil, bir Point nesnesini parametresi olarak almasıdır.

dx ve dy adındaki iki parametreyi içeren inflate() yöntemini kullanarak da Rectangle nesnesini yeniden boyutlandırabilirsiniz. dx parametreleri dikdörtgenin merkezden sola ve sağa taşınan kenarlarının piksel sayısını gösterir. dy parametresi merkezden taşınan üst ve alt kenarlarının piksek sayısını gösterir.

import flash.geom.Rectangle; 
var x1:Number = 0; 
var y1:Number = 0; 
var width1:Number = 100; 
var height1:Number = 50; 
var rect1:Rectangle = new Rectangle(x1, y1, width1, height1); 
trace(rect1) // (x=0, y=0, w=100, h=50) 
rect1.inflate(6,4);  
trace(rect1); // (x=-6, y=-4, w=112, h=58)

inflatePt() yöntemi benzer şekilde çalışır, tek farkı, dx ve dy değerlerini değil, bir Point nesnesini parametresi olarak almasıdır.

Rectangle nesnelerinin birleşimlerini ve kesişimlerini bulma

İki dikdörtgenin sınırlarıyla oluşturulan dikdörtgen bölgesini bulmak için union() yöntemini kullanırsınız:

import flash.display.*; 
import flash.geom.Rectangle; 
var rect1:Rectangle = new Rectangle(0, 0, 100, 100); 
trace(rect1); // (x=0, y=0, w=100, h=100) 
var rect2:Rectangle = new Rectangle(120, 60, 100, 100); 
trace(rect2); // (x=120, y=60, w=100, h=100) 
trace(rect1.union(rect2)); // (x=0, y=0, w=220, h=160)

İki dikdörtgenin örtüşen alanıyla oluşturulan dikdörtgen bölgesini bulmak için intersection() yöntemini kullanırsınız:

import flash.display.*; 
import flash.geom.Rectangle; 
var rect1:Rectangle = new Rectangle(0, 0, 100, 100); 
trace(rect1); // (x=0, y=0, w=100, h=100) 
var rect2:Rectangle = new Rectangle(80, 60, 100, 100); 
trace(rect2); // (x=120, y=60, w=100, h=100) 
trace(rect1.intersection(rect2)); // (x=80, y=60, w=20, h=40)

İki dikdörtgenin kesişip kesişmediğini öğrenmek için intersects() yöntemini kullanırsınız. Bir görüntüleme nesnesinin Sahne Alanı'nın belirli bir bölgesinde olup olmadığını öğrenmek için intersects() yöntemini kullanabilirsiniz. Örneğin aşağıdaki kodda circle nesnesini içeren görüntüleme nesnesi kabının koordinat alanının Sahne alanının koordinat alanıyla aynı olduğunu varsayın. Bu örnek, bir görüntüleme nesnesinin ( circle ), target1 ve target2 Rectangle nesneleri tarafından tanımlanan Sahne Alanı'nın belirtilen bölgeleriyle kesişip kesişmediğini belirlemek için intersects() yönteminin nasıl kullanıldığını gösterir:

import flash.display.*; 
import flash.geom.Rectangle; 
var circle:Shape = new Shape(); 
circle.graphics.lineStyle(2, 0xFF0000); 
circle.graphics.drawCircle(250, 250, 100); 
addChild(circle); 
var circleBounds:Rectangle = circle.getBounds(stage); 
var target1:Rectangle = new Rectangle(0, 0, 100, 100); 
trace(circleBounds.intersects(target1)); // false 
var target2:Rectangle = new Rectangle(0, 0, 300, 300); 
trace(circleBounds.intersects(target2)); // true

Aynı şekilde, iki görüntüleme nesnesinin sınırlama dikdörtgenlerinin örtüşüp örtüşmediğini öğrenmek için intersects() yöntemini kullanabilirsiniz. Görüntüleme nesnesinin konturlarının bir sınırlama bölgesine ekleyebileceği herhangi bir ek bir alanı dahil etmek için, DisplayObject sınıfının getRect() yöntemini kullanın.

Dikdörtgen nesnelerinin diğer kullanımları

Rectangle nesneleri, şu yöntemlerde ve özelliklerde kullanılır:

Sınıf

Yöntemler veya özellikler

Açıklama

BitmapData

applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), drawWithQuality(), encode(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDissolve(), setPixels(), and threshold()

BitmapData nesnesinin bir bölgesini tanımlamak için bazı parametrelerin türü olarak kullanılır.

DisplayObject

getBounds(), getRect(), scrollRect, scale9Grid

Özelliğin veri türü veya döndürülen veri türü olarak kullanılır.

PrintJob

addPage()

printArea parametresini tanımlamak için kullanılır.

Sprite

startDrag()

bounds parametresini tanımlamak için kullanılır.

TextField

getCharBoundaries()

Döndürme veri türü olarak kullanılır.

Transform

pixelBounds

Veri türü olarak kullanılır.