Rectangleクラス

June 7, 2007

Rectangleオブジェクトはドラッグ領域の指定やプリント領域の指定などで使われる領域です。
Rectangleオブジェクトはx座標、y座標、幅、高さを指定して作成します。

var rX:Number = 10;
var rY:Number = 15;
var rW:Number = 100;
var rH:Number = 80;
var rect:Rectangle = new Rectangle(rX,rY,rW,rH);

長方形の領域が作成されますが、目に見えるわけではありません。
trace文を使って存在を確認することができます。

trace(rect);// 出力 (x=10, y=15, w=100, h=80)

Rectangleオブジェクトははxプロパティ、yプロパティの値を変更して移動させたり、widthプロパティ、heightプロパティの値を変更してサイズを変えることができます。

その他に、leftプロパティとtopプロパティ、rightプロパティとbottomプロパティを指定する方法があります。
この場合は、位置と同時に領域のサイズも変更されるので注意が必要です。

leftプロパティに指定した値はxプロパティにそのまま反映し、同時にwidthプロパティも変更されます。
また、topプロパティに指定した値はyプロパティにそのまま反映し、同時にheightプロパティも変更されます。

rect.left = 20;
rect.top = 15;
trace(rect);// 出力 (x=20, y=15, w=90, h=80)

rightプロパティはxプロパティとwidthプロパティの合計です。次の例ではもともとのxプロパティが20なので、widthプロパティが10に変更されます。
bottomプロパティはyプロパティとheightプロパティの合計です。次の例ではyプロパティが15なので、heightプロパティが15に変更されます。

rect.right = 30;
rect.bottom = 30;
trace(rect);// 出力 (x=20, y=15, w=10, h=15)

複数の長方形を結合した領域を知るにはunion()メソッドを使います。

// 1つ目の領域
var rect1:Rectangle = new Rectangle(10,15,100,80);
trace(rect1);// 出力 (x=10, y=15, w=100, h=80)
// 2つ目の領域
var rect2:Rectangle = new Rectangle(30,30,120,100);
trace(rect2);// 出力 (x=30, y=30, w=120, h=100)
// 結合した領域
var rect3:Rectangle = rect1.union(rect2);
trace(rect3);// 出力 (x=10, y=15, w=140, h=115)

複数の長方形の重なる領域を知るにはintersection()メソッドを使います。

// 1つ目の領域
var rect1:Rectangle = new Rectangle(10,15,100,80);
trace(rect1);// 出力 (x=10, y=15, w=100, h=80)
// 2つ目の領域
var rect2:Rectangle = new Rectangle(30,30,120,100);
trace(rect2);// 出力 (x=30, y=30, w=120, h=100)
// 重なる領域
var rect3:Rectangle = rect1.intersection(rect2);
trace(rect3);// 出力 (x=30, y=30, w=80, h=65)

squareとrect1、rect2が重なるかの判定はintersects()メソッドを使います。
trueなら重なっています。

var square:Sprite = new Sprite();
square.graphics.beginFill(0x666666);
square.graphics.drawRect(10,10,10,10);
addChild(square);
var squareRect:Rectangle = square.getBounds(stage);
var rect1:Rectangle = new Rectangle(0,0,10,10);
trace(squareRect.intersects(rect1));// 出力 false
var rect2:Rectangle = new Rectangle(5,5,10,10);
trace(squareRect.intersects(rect2));// 出力 true


参考URL

Adobe Flex 2 リファレンスガイド flash.geom.Rectangleクラス

カテゴリー: 


Posted by scratchbrain at June 7, 2007 4:01 AM ブックマークに追加する

Trackback

Trackback URL for this entry:

Post a Comment


検索

このブログを検索

サイトコンセプト

当ブログは、レディオヘッド、司馬遼太郎作品の読書感想、Flash、Actionscriptの技術メモ・サンプルソース、日記・雑感などを公開しています。
[SCRATCHBRAIN プロフィール]
[アートワーク]
[Twitter]

リンク

  • scratchbrain.netホーム
  • アートワーク
  • scratchbrainプロフィール
  • 音楽ブログ
  • スクラップブック
  • 実験プロジェクト
  • こんなライヴに行きました

広告

最近のエントリー

カテゴリー

タグクラウド

全てのエントリー一覧

RSSフィード

月別アーカイブ

powered by Movable Type Pro 4.23-ja

hosted by