サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

Shapeクラス

ID: FN0607005 Product: Flash

Platform: All
Version: Flash 9 and above

パッケージ
flash.display

クラス
public class Shape

継承
Shape > DisplayObject > EventDispatcher > Object

説明
Shapeクラスは、ActionScript描画API(Application Program Interface)を使った容量の軽いシェイプをつくるために用いられます。Shapeクラスにはgraphicsプロパティがあり、Graphicsクラスのメソッドにアクセスできます。

Spriteクラスgraphicsプロパティをもち、Shapeクラスにはない機能が備わっています。たとえば、SpriteオブジェクトはDisplayObjectContainer(訳者注: のサブクラス)です。他方、Shapeオブジェクトはそうではありませんので、子のDisplayObjectをもつことはできません。このため、ShapeオブジェクトはSpriteオブジェクトと比べて、同じグラフィックスをもたせても、メモリ消費は少なくて済みます。


以下の例は、ShapeExampleクラスを用いて円と角丸矩形および正方形を描きます[*1]。この処理は、つぎのステップを実行して実現します。

  1. sizeプロパティを宣言して、後で各シェイプのサイズを決めるために用います。
  2. 各種の設定用プロパティを宣言して、背景色をオレンジに、境界線の色はグレーに、境界線の太さとして0(極細線[*2])を指定し、角の半径は9ピクセルに、そしてステージ端や他のオブジェクトとの間隔をピクセルとします。
  3. 上記のステップで宣言したプロパティをGraphicsクラスのビルトインメソッドに指定して、円と角丸矩形および正方形を座標x = 0、y = 0に描きます。
  4. 各シェイプはステージ最前面から順に、x = 5、y = 5を起点として、シェイプ間は5ピクセル間隔でrefreshLayout()メソッドを使って描画し直しします。

package {
  import flash.display.DisplayObject;
  import flash.display.Graphics;
  import flash.display.JointStyle;
  import flash.display.LineScaleMode;
  import flash.display.Shape;
  import flash.display.Sprite;

  public class ShapeExample extends Sprite {
    private var size:uint = 80;
    private var bgColor:uint = 0xFFCC00;
    private var borderColor:uint = 0x666666;
    private var borderSize:uint = 0;
    private var cornerRadius:uint = 9;
    private var gutter:uint = 5;

    public function ShapeExample() {
      doDrawCircle();
      doDrawRoundRect();
      doDrawRect();
      refreshLayout();
    }

    private function refreshLayout():void {
      var ln:uint = numChildren;
      var child:DisplayObject;
      var lastChild:DisplayObject = getChildAt(0);
      lastChild.x = gutter;
      lastChild.y = gutter;
      for (var i:uint = 1; i < ln; i++) {
        child = getChildAt(i);
        child.x = gutter + lastChild.x + lastChild.width;
        child.y = gutter;
        lastChild = child;
      }
    }

    private function doDrawCircle():void {
      var child:Shape = new Shape();
      var halfSize:uint = Math.round(size/2);
      child.graphics.beginFill(bgColor);
      child.graphics.lineStyle(borderSize, borderColor);
      child.graphics.drawCircle(halfSize, halfSize, halfSize);
      child.graphics.endFill();
      addChild(child);
    }

    private function doDrawRoundRect():void {
      var child:Shape = new Shape();
      child.graphics.beginFill(bgColor);
      child.graphics.lineStyle(borderSize, borderColor);
      child.graphics.drawRoundRect(0, 0, size, size, cornerRadius);
      child.graphics.endFill();
      addChild(child);
    }

    private function doDrawRect():void {
      var child:Shape = new Shape();
      child.graphics.beginFill(bgColor);
      child.graphics.lineStyle(borderSize, borderColor);
      child.graphics.drawRect(0, 0, size, size);
      child.graphics.endFill();
      addChild(child);
    }
  }
}


[訳者注*1] [Control] > [Test Movie](ムービープレビュー)を行うと、円と角丸矩形および正方形が描画されます(図001)。

図001■円と角丸矩形および正方形が描画される
TestMovie
SWFを再生すると描画が行われる

[訳者注*2] ShapeExampleクラスは、MovieClipシンボルまたはFlashドキュメントに設定します。MovieClipシンボルに設定する場合には、[Symbol Properties](シンボルプロパティ)あるいは[Linkage Properties](リンケージプロパティ)のダイアログボックスで、[Class]にクラス名を入力します(図002)。

図002■ActionScript 3.0クラスをMovieClipの[Class]に設定
TestMovie
リンケージの[Class]にクラス名を入力する

Flashドキュメントに設定するには、ドキュメントに対して[Properties](プロパティ)インスペクタで[Document class]にクラス名を入力します(図003)。

図003■ActionScript 3.0クラスをドキュメントの[Document class]に設定
TestMovie
[Properties]インスペクタで[Document class]にクラス名を入力する

Player
ActionScript 3.0/Flash Player 9以降。

出典
[ActionScript 3.0 Language Reference] > [flash.display] > [Shape]

_____

作成者: 野中文雄
作成日: 2006年7月30日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.