表示オブジェクトのサイズを測定および操作する方法は 2 つあります。サイズのプロパティ(
width
および
height
)または拡大/縮小のプロパティ(
scaleX
および
scaleY
)のいずれかを使用します。
各表示オブジェクトには、
width
プロパティと
height
プロパティがあり、これらの値はオブジェクトのサイズに初期設定されています(ピクセル単位)。これらのプロパティの値を読み取って、表示オブジェクトのサイズを測定できます。 また、次のように新しい値を指定して、オブジェクトのサイズを変更することもできます。
// Resize a display object.
square.width = 420;
square.height = 420;
// Determine the radius of a circle display object.
var radius:Number = circle.width / 2;
表示オブジェクトの
height
または
width
を変更すると、オブジェクトが拡大または縮小されます。つまり、オブジェクトのコンテンツが新しい領域に合わせて拡張または縮小することになります。ベクターシェイプのみを含む表示オブジェクトの場合、これらのシェイプは新しいスケールで再描画されます。その際、画質が低下することはありません。 表示オブジェクト内のすべてのビットマップグラフィックエレメントは、再描画されるのではなく、拡大/縮小されます。 このため、イメージの実際のピクセル情報よりも大きな幅と高さが設定されたデジタル写真などの場合、ピクセル化されて粗く表示されます。
表示オブジェクトの
width
または
height
プロパティを変更すると、オブジェクトの
scaleX
プロパティと
scaleY
プロパティも Flash Player および AIR によって更新されます。
注意:
TextField オブジェクトはこの拡大/縮小動作での例外です。テキストフィールドでは、テキストの折り返しとフォントサイズに合わせてテキストフィールド自体のサイズが変化する必要があります。そのため、サイズ変更後に scaleX 値または scaleY 値が 1 に戻ります。ただし、TextField オブジェクトの scaleX 値または scaleY 値を手動で調整した場合は、指定した拡大/縮小値に合わせて幅と高さの値が変化します。
これらのプロパティは、表示オブジェクトのサイズを、その元のサイズと比較して相対的に表します。
scaleX
プロパティと
scaleY
プロパティは、小数(十進分数)値を使用してパーセンテージを表します。例えば、表示オブジェクトの
width
を変更して、その幅を元のサイズの半分にした場合、このオブジェクトの
scaleX
プロパティの値は 50% を表す
.5
となります。 このオブジェクトの高さを 2 倍にした場合、その
scaleY
プロパティの値は、200% を表す
2
となります。
// circle is a display object whose width and height are 150 pixels.
// At original size, scaleX and scaleY are 1 (100%).
trace(circle.scaleX); // output: 1
trace(circle.scaleY); // output: 1
// When you change the width and height properties,
// Flash Player changes the scaleX and scaleY properties accordingly.
circle.width = 100;
circle.height = 75;
trace(circle.scaleX); // output: 0.6622516556291391
trace(circle.scaleY); // output: 0.4966887417218543
サイズの変更は相対的ではありません。 つまり、四角形の
height
は変更するが
width
は変更しない場合、その比率は同じではなくなるため、オブジェクトは四角形ではなく矩形になります。表示オブジェクトのサイズを相対的に変更したい場合、
width
プロパティまたは
height
プロパティを設定する代わりに、
scaleX
プロパティと
scaleY
プロパティの値を設定することによって、表示オブジェクトのサイズを変更できます。例えば次のコードは、
square
という名前の表示オブジェクトの
width
を変更し、次に垂直スケール(
scaleY
)を変更して水平スケールに一致させることで、このオブジェクトの相対的なサイズを保ちます。
// Change the width directly.
square.width = 150;
// Change the vertical scale to match the horizontal scale,
// to keep the size proportional.
square.scaleY = square.scaleX;