サイトトップ

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

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

Spriteクラス

ID: FN0607002 Product: Flash

Platform: All
Version: Flash 9 and above

パッケージ
flash.display

クラス
public class Sprite

継承
Sprite > DisplayObjectContainer > InteractiveObject > DisplayObject > EventDispatcher > Object

サブクラス
MovieClip

説明
Spriteクラスは、ディスプレイリストを構成する基本的な要素です[*1]。ディスプレイリストのノードはグラフィックスを表示することができ、さらに子をもつこともできます。

Spriteオブジェクトは、MovieClipと似ています。しかし、タイムラインをもちません。Spriteは、タイムラインを必要としないオブジェクトの基本クラスに適しています[*2]。たとえば、Spriteは論理的な基本クラスとして、通常タイムラインが要らないユーザーインターフェースコンポーネントに用いられるでしょう。

Spriteは、ActionScript 3.0の新たなクラスです。Spriteは、MovieClipクラスに替わる機能を提供します。MovieClipクラスは、従来のActionScriptのバージョンすべての機能を引続きもつことにより、下位互換性を提供します。

[訳者注*1] ディスプレイリストについては、akihiro kamijo「DisplayObjectContainerクラス」をご参照ください。

[訳者注*2] SpriteとMovieClipの違いについては、akihiro kamijo「SpliteクラスとMovieClipクラス」をご参照ください。


つぎの例は、SpriteExampleクラスを使ってオレンジの正方形をステージに描き、その四角をユーザーがクリックしたりドラッグするたびにイベントを発生させます[*3]。この処理は、つぎの手順により実現できます[*4]

  1. sizeプロパティ(100×100ピクセル)と背景色(オレンジ)のプロパティbgColorをそれぞれ宣言して、後で正方形を描くときに用います。
  2. つぎにコンストラクタで子のSpriteオブジェクトを新たに生成します。そのSpriteを使って、ふたつのイベントリスナーと対応するメソッド、mouseDownHandler()およびmouseUpHandler()を加えます。
  3. 子のSpriteオブジェクトはdraw()メソッドに渡され、そのメソッドがオレンジの正方形を描きます。
  4. 子のオブジェクトは、さらにaddChild()メソッドの呼出しにより、ディスプレイリストに収められます。
  5. イベントリスナーは、つぎのように動作します。
    • mouseDownHandler(): ユーザーがSpriteオブジェクトをクリックすると、このメソッドがmouseMoveイベントリスナーとmouseMove()メソッドを追加します。mouseMove()メソッドは、マウスの動きを処理します。さらに、startDrag()メソッドが呼ばれて、Spriteオブジェクトがドラッグできるようになります。
    • mouseUpHandler(): マウスボタンが放されると、mosueMoveイベントリスナーが削除されます。stopDrag()メソッドも呼ばれて、オレンジの正方形は動かなくなります。
    • mouseMoveHandler(): マウスの左ボタンが押されている間、このメソッドはFlash Playerに対してオレンジの正方形を最描画し続けるよう指示します。

package {
  import flash.display.Sprite;
  import flash.events.*;

  public class SpriteExample extends Sprite {
    private var size:uint  = 100;
    private var bgColor:uint = 0xFFCC00;

    public function SpriteExample() {
      var child:Sprite = new Sprite();
      child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
      child.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
      draw(child);
      addChild(child);
    }

    private function mouseDownHandler(event:MouseEvent):void {
      trace("mouseDownHandler");
      var sprite:Sprite = Sprite(event.target);
      sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
      sprite.startDrag();
    }

    private function mouseUpHandler(event:MouseEvent):void {
      trace("mouseUpHandler");
      var sprite:Sprite = Sprite(event.target);
      sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
      sprite.stopDrag();
    }

    private function mouseMoveHandler(event:MouseEvent):void {
      trace("mouseMoveHandler");
      event.updateAfterEvent();
    }

    private function draw(sprite:Sprite):void {
      sprite.graphics.beginFill(bgColor);
      sprite.graphics.drawRect(0, 0, size, size);
      sprite.graphics.endFill();
    }
  }
}


[訳者注*3] [Control] > [Test Movie](ムービープレビュー)を行い、オレンジの正方形の上でマウスをクリックしてドラッグし、マウスボタンを放すと、それぞれのイベントに応じて呼出されたメソッドから"mouseDownHandler"、"mouseMoveHandler"、"mouseUpHandler"のテキストが[Output](出力)パネルに表示されます(図001)。

図001■マウス操作から発生するイベントに応じてメソッドが呼出される
TestMovie
メソッドを呼出すとその名前が出力される

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

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

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

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

Player
ActionScript 3.0/Flash Player 9以降。

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

_____

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


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