サイズの変更とオブジェクトの拡大 / 縮小

表示オブジェクトのサイズを測定および操作する方法は 2 つあります。サイズのプロパティ (width および height) または拡大 / 縮小のプロパティ (scaleX および scaleY) のいずれかを使用します。

各表示オブジェクトには、width プロパティと height プロパティがあり、これらの値はオブジェクトのサイズに初期設定されています (ピクセル単位)。これらのプロパティの値を読み取って、表示オブジェクトのサイズを測定できます。また、次のように新しい値を指定して、オブジェクトのサイズを変更することもできます。

// 表示オブジェクトのサイズを変更する。
square.width = 420;
square.height = 420;

// 円表示オブジェクトの半径を決定する。
var radius:Number = circle.width / 2;

表示オブジェクトの height または width を変更すると、オブジェクトが拡大または縮小されます。つまり、オブジェクトのコンテンツが新しい領域に合わせて拡張または縮小することになります。ベクターシェイプのみを含む表示オブジェクトの場合、これらのシェイプは新しいスケールで再描画されます。その際、画質が低下することはありません。表示オブジェクト内のすべてのビットマップグラフィックエレメントは、再描画されるのではなく、拡大 / 縮小されます。このため、イメージの実際のピクセル情報よりも大きな幅と高さが設定されたデジタル写真などの場合、ピクセル化されて粗く表示されます。

表示オブジェクトの width または height プロパティを変更すると、オブジェクトの scaleX プロパティと scaleY プロパティも Flash Player によって更新されます。これらのプロパティは、表示オブジェクトのサイズを、その元のサイズと比較して相対的に表します。scaleX プロパティと scaleY プロパティは、小数 (十進分数) 値を使用してパーセンテージを表します。たとえば、表示オブジェクトの width を変更し、その幅を元のサイズの半分にした場合、このオブジェクトの scaleX プロパティの値は、50% を表す .5 となります。このオブジェクトの高さを 2 倍にした場合、その scaleY プロパティの値は、200% を表す 2 となります。

// 円は、幅と高さが 150 ピクセルの表示オブジェクト。
// 元のサイズの scaleX と scaleY はそれぞれ 1 (100%)。
trace(circle.scaleX);// 出力 : 1
trace(circle.scaleY);// 出力 : 1

// width プロパティと height プロパティが変更されると、
// Flash Player はこれに従って scaleX および scaleY プロパティを変更する。
circle.width = 100;
circle.height = 75;
trace(circle.scaleX);// 出力 : 0.6622516556291391
trace(circle.scaleY);// 出力 : 0.4966887417218543

サイズの変更は相対的ではありません。つまり、四角形の height は変更するが width は変更しない場合、その比率は同じではなくなるため、オブジェクトは四角形ではなく矩形になります。表示オブジェクトのサイズを相対的に変更したい場合、width プロパティまたは height プロパティを設定する代わりに、scaleX プロパティと scaleY プロパティの値を設定することによって、表示オブジェクトのサイズを変更できます。たとえば次のコードは、square という名前の表示オブジェクトの width を変更し、次に垂直スケール (scaleY) を変更して水平スケールに一致させることで、このオブジェクトの相対的なサイズを保ちます。

// 幅を直接変更する。
square.width = 150;

// 相対的なサイズ変更を維持するために
// 垂直スケールを変更して水平スケールに一致させる。
square.scaleY = square.scaleX;

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000156.html