kinugasa.object

## クラス CompositeSprite

- java.lang.Object
- - kinugasa.object.Sprite
  - - kinugasa.object.BasicSprite
    - - kinugasa.object.CompositeSprite

- すべての実装されたインタフェース:
    java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<Sprite>, Nameable, Controllable, Drawable, Shapeable
  直系の既知のサブクラス:
    ObjectLayerSprite

      public class CompositeSprite
      extends BasicSprite

  複数のスプライトをまとめて描画したり、ソートできるクラスです.
  このクラスのことを"複合スプライト"と呼びます。
  関連項目:
    直列化された形式

- - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `CompositeSprite()` 新しい複合スプライトを作成します.
    `CompositeSprite(java.util.List<Sprite> spr)` 新しい複合スプライトを作成します.
    `CompositeSprite(Sprite... spr)` 新しい複合スプライトを作成します.

  - ### メソッドのサマリー

    All Methods Instance Methods Concrete Methods
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `add(Sprite spr)` この複合スプライトに新しいスプライトを追加します.
    `void` | `addAll(java.util.List<Sprite> spr)` この複合スプライトに新しいスプライトを追加します.
    `void` | `addAll(Sprite... spr)` この複合スプライトに新しいスプライトを追加します.
    `void` | `clear()` スプライトリスト内のすべてのスプライトを削除します.
    `CompositeSprite` | `clone()` このスプライトの複製を作成します.
    `boolean` | `contains(Sprite spr)` 指定したスプライトがこの複合スプライトに含まれているかを検査します.
    `void` | `draw(java.awt.Graphics2D g)` 追加されているすべてのスプライトをその順序で描画します.
    `void` | `draw(java.awt.Graphics2D g, java.util.Comparator<Sprite> sortMode)` 追加されているすべてのスプライトをソートしてから描画します.
    `Sprite` | `getSprite(int idx)` スプライトリストの指定したインデックスに格納されているスプライトを取得します.
    `java.util.List<Sprite>` | `getSprites()` この複合スプライトが持つスプライトリストを取得します.
    `void` | `remove(Sprite spr)` 指定したスプライトが、この複合スプライトに含まれている場合、そのスプライトをこの複合スプライトから削除します.
    `void` | `removeAll(java.util.List<Sprite> spr)` 指定したスプライトが、この複合スプライトに含まれている場合、そのスプライトをこの複合スプライトから削除します.
    `void` | `removeAll(Sprite... spr)` 指定したスプライトが、この複合スプライトに含まれている場合、そのスプライトをこの複合スプライトから削除します.
    `void` | `setAngle(float angle)`
    `void` | `setBounds(java.awt.geom.Rectangle2D.Float bounds)` このスプライトの領域を設定します.
    `void` | `setExist(boolean exist)` スプライトの生存状態を設定します.
    `void` | `setHeight(float height)` このスプライトの高さを設定します.
    `void` | `setLocation(float x, float y)` スプライトの左上の位置を設定します.
    `void` | `setLocation(java.awt.geom.Point2D.Float location)` スプライトの左上の位置を設定します.
    `void` | `setMovingModel(MovingModel movingModel)` 移動モデルを設定します.
    `void` | `setSize(java.awt.Dimension size)` スプライトのサイズを取得します.
    `void` | `setSize(float w, float h)` スプライトのサイズを取得します.
    `void` | `setSpeed(float speed)`
    `void` | `setVector(VectorF vector)`
    `void` | `setVisible(boolean visible)` スプライトの可視状態を設定します.
    `void` | `setWidth(float width)` このスプライトの幅を設定します.
    `void` | `setX(float x)` このスプライトの左上のX座標を設定します.
    `void` | `setY(float y)` このスプライトの左上のY座標を設定します.
    `void` | `setZ(float z)` このスプライトのZ深度を設定します.
    `void` | `setZ(float z, int idx)` スプライトリストの要素idx番目のスプライトのZ軸座標を設定します.
    `int` | `size()` この複合スプライトが持つスプライトの数を取得します.
    `void` | `sort()` スプライトリストをソートします.
    `void` | `sort(java.util.Comparator<Sprite> sortMode)` スプライトリストをソートします.
    `void` | `sortZ(float minZ, float maxZ)` スプライトリスト内のすべてのスプライトを、その順序でZ軸座標に並べます.
    `<T extends Sprite> java.util.List<Sprite>` | `subList(java.lang.Class<T> type)` スプライトの実装でフィルタリングし、サブリストを作成します.
    `java.lang.String` | `toString()` スプライトの文字列表記を取得します.

    - ### クラスから継承されたメソッド kinugasa.object.BasicSprite

      `getAngle, getMovingModel, getMovingModel, getNextCenter, getNextLocation, getSpeed, getVector, move, move, move, move`

    - ### クラスから継承されたメソッド kinugasa.object.Sprite

      `compareTo, contains, getBounds, getCenter, getCenterX, getCenterY, getHeight, getHitBounds, getLocation, getName, getPersonalCenter, getPersonalCenterX, getPersonalCenterY, getSize, getWidth, getX, getY, getZ, isExist, isVisible, setBounds, setBounds, setName, update, updateCenter, updatePersonalCenter`

    - ### クラスから継承されたメソッド java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### CompositeSprite

          public CompositeSprite()

      新しい複合スプライトを作成します. このコンストラクタでは、スプライトリストの初期容量は0になります。

    - #### CompositeSprite

          public CompositeSprite(Sprite... spr)

      新しい複合スプライトを作成します.
      パラメータ:
        `spr` - 複合スプライトに追加するスプライトを指定します。

    - #### CompositeSprite

          public CompositeSprite(java.util.List<Sprite> spr)

      新しい複合スプライトを作成します.
      パラメータ:
        `spr` - 複合スプライトに追加するスプライトを指定します。

  - ### メソッドの詳細

    - #### add

          public void add(Sprite spr)
                   throws java.lang.IllegalArgumentException

      この複合スプライトに新しいスプライトを追加します. 新しいスプライトはスプライトリストの最後尾に追加されます。
      Z軸座標は自動調整されません。
      パラメータ:
        `spr` - 追加するスプライトを指定します。
      例外:
        `java.lang.IllegalArgumentException` - 追加するスプライトがthisのとき、または、追加するスプライトがCompositeSpriteで その複合スプライトが保持するスプライトリスト内にthisまたは親のスプライトがある場合に投げられます。
        複合スプライトの親がその複合スプライトが持つすべての子の親と循環参照になっているかのチェックは 新しいスプライトを追加するたびに再帰的に行われます。

    - #### addAll

          public void addAll(Sprite... spr)
                      throws java.lang.IllegalArgumentException

      この複合スプライトに新しいスプライトを追加します. 新しいスプライトはスプライトリストの最後尾に指定された順序で追加されます。
      Z軸座標は自動調整されません。
      パラメータ:
        `spr` - 追加するスプライトを指定します。
      例外:
        `java.lang.IllegalArgumentException` - 追加するスプライトにthisが含まれるとき、または、追加するスプライトがCompositeSpriteで その複合スプライトが保持するスプライトリスト内にthisまたは親のスプライトがある場合に投げられます。
        複合スプライトの親がその複合スプライトが持つすべての子の親と循環参照になっているかのチェックは 新しいスプライトを追加するたびに再帰的に行われます。

    - #### addAll

          public void addAll(java.util.List<Sprite> spr)
                      throws java.lang.IllegalArgumentException

      この複合スプライトに新しいスプライトを追加します. 新しいスプライトはスプライトリストの最後尾に指定された順序で追加されます。
      Z軸座標は自動調整されません。
      パラメータ:
        `spr` - 追加するスプライトを指定します。
      例外:
        `java.lang.IllegalArgumentException` - 追加するスプライトにthisが含まれるとき、または、追加するスプライトがCompositeSpriteで その複合スプライトが保持するスプライトリスト内にthisまたは親のスプライトがある場合に投げられます。
        複合スプライトの親がその複合スプライトが持つすべての子の親と循環参照になっているかのチェックは 新しいスプライトを追加するたびに再帰的に行われます。

    - #### remove

          public void remove(Sprite spr)

      指定したスプライトが、この複合スプライトに含まれている場合、そのスプライトをこの複合スプライトから削除します.
      パラメータ:
        `spr` - 削除するスプライトを指定します。

    - #### removeAll

          public void removeAll(Sprite... spr)

      指定したスプライトが、この複合スプライトに含まれている場合、そのスプライトをこの複合スプライトから削除します.
      パラメータ:
        `spr` - 削除するスプライトを指定します。

    - #### removeAll

          public void removeAll(java.util.List<Sprite> spr)

      指定したスプライトが、この複合スプライトに含まれている場合、そのスプライトをこの複合スプライトから削除します.
      パラメータ:
        `spr` - 削除するスプライトを指定します。

    - #### contains

          public boolean contains(Sprite spr)

      指定したスプライトがこの複合スプライトに含まれているかを検査します.
      パラメータ:
        `spr` - 検査するスプライトを指定します。
      戻り値:
        sprがこの複合スプライトのスプライトリストに含まれている場合true、そうでない場合falseを返します。

    - #### sortZ

          public void sortZ(float minZ,
                            float maxZ)
                     throws java.lang.IllegalArgumentException

      スプライトリスト内のすべてのスプライトを、その順序でZ軸座標に並べます.
      パラメータ:
        `minZ` - リストの0番目に設定されるz座標を指定します。
        `maxZ` - リストの最後の要素に設定されるz座標を指定します。
      例外:
        `java.lang.IllegalArgumentException` - minZ > maxZのときに投げられます。

    - #### clear

          public void clear()

      スプライトリスト内のすべてのスプライトを削除します.

    - #### getSprites

          public java.util.List<Sprite> getSprites()

      この複合スプライトが持つスプライトリストを取得します. リストは参照を保持します。リストに対する操作は複合スプライトに適用されます。
      戻り値:
        この複合スプライトのスプライトリストが返されます。

    - #### getSprite

          public Sprite getSprite(int idx)
                           throws java.lang.IndexOutOfBoundsException

      スプライトリストの指定したインデックスに格納されているスプライトを取得します.
      パラメータ:
        `idx` - 取得するスプライトのインデックスを指定します.
      戻り値:
        指定したインデックスのスプライトが返されます.
      例外:
        `java.lang.IndexOutOfBoundsException` - 不正なインデックスの場合に投げられます。

    - #### size

          public int size()

      この複合スプライトが持つスプライトの数を取得します.
      戻り値:
        スプライトリストの要素数を返します。

    - #### draw

          public void draw(java.awt.Graphics2D g)

      追加されているすべてのスプライトをその順序で描画します. このメソッドでは、この複合スプライトの可視状態と生存状態が考慮されます。
      各スプライトは、それぞれの可視状態と生存状態および座標が使用されます。
      定義:
        `draw` インタフェース内 `Drawable`
      定義:
        `draw` クラス内 `BasicSprite`
      パラメータ:
        `g` - 書き込むグラフィックスコンテキストを送信します。

    - #### draw

          public void draw(java.awt.Graphics2D g,
                           java.util.Comparator<Sprite> sortMode)

      追加されているすべてのスプライトをソートしてから描画します. このメソッドでは、この複合スプライトの可視状態と生存状態が考慮されます。
      各スプライトは、それぞれの可視状態と生存状態および座標が使用されます。
      このメソッドでは、スプライトリスト内に複合スプライトが存在する場合は、 その複合スプライトを再帰的にソートします。
      パラメータ:
        `g` - 書き込むグラフィックスコンテキストを送信します。
        `sortMode` - ソート方法を指定します。SpriteSortModeを指定できます。

    - #### sort

          public void sort(java.util.Comparator<Sprite> sortMode)

      スプライトリストをソートします. このメソッドでは、スプライトリスト内に複合スプライトが存在する場合は、 その複合スプライトを再帰的にソートします。
      パラメータ:
        `sortMode` - ソート方法を指定します。SpriteSortModeを指定できます。

    - #### sort

          public void sort()

      スプライトリストをソートします. このメソッドでは、SpriteSortModeのBACK_TO_FRONTが使用されます。
      このメソッドでは、スプライトリスト内に複合スプライトが存在する場合は、 その複合スプライトを再帰的にソートします。

    - #### setVisible

          public void setVisible(boolean visible)

      クラスからコピーされた説明: `Sprite`
      スプライトの可視状態を設定します.
      オーバーライド:
        `setVisible` クラス内 `Sprite`
      パラメータ:
        `visible` - スプライトの可視状態.

    - #### setExist

          public void setExist(boolean exist)

      クラスからコピーされた説明: `Sprite`
      スプライトの生存状態を設定します.
      オーバーライド:
        `setExist` クラス内 `Sprite`
      パラメータ:
        `exist` - 生存状態.

    - #### setZ

          public void setZ(float z)

      クラスからコピーされた説明: `Sprite`
      このスプライトのZ深度を設定します.
      オーバーライド:
        `setZ` クラス内 `Sprite`
      パラメータ:
        `z` - 深度.

    - #### setZ

          public void setZ(float z,
                           int idx)
                    throws java.lang.IndexOutOfBoundsException

      スプライトリストの要素idx番目のスプライトのZ軸座標を設定します.
      パラメータ:
        `z` - 設定する座標を指定します。
        `idx` - Z座標を設定するスプライトのインデックスを指定します。
      例外:
        `java.lang.IndexOutOfBoundsException` - 不正なインデックスの場合に投げられます。

    - #### setX

          public void setX(float x)

      クラスからコピーされた説明: `Sprite`
      このスプライトの左上のX座標を設定します.
      オーバーライド:
        `setX` クラス内 `Sprite`
      パラメータ:
        `x` - X座標.

    - #### setY

          public void setY(float y)

      クラスからコピーされた説明: `Sprite`
      このスプライトの左上のY座標を設定します.
      オーバーライド:
        `setY` クラス内 `Sprite`
      パラメータ:
        `y` - Y座標.

    - #### setWidth

          public void setWidth(float width)

      クラスからコピーされた説明: `Sprite`
      このスプライトの幅を設定します.
      オーバーライド:
        `setWidth` クラス内 `Sprite`
      パラメータ:
        `width` - 幅.

    - #### setHeight

          public void setHeight(float height)

      クラスからコピーされた説明: `Sprite`
      このスプライトの高さを設定します.
      オーバーライド:
        `setHeight` クラス内 `Sprite`
      パラメータ:
        `height` - 高さ.

    - #### setLocation

          public void setLocation(java.awt.geom.Point2D.Float location)

      クラスからコピーされた説明: `Sprite`
      スプライトの左上の位置を設定します.
      オーバーライド:
        `setLocation` クラス内 `Sprite`
      パラメータ:
        `location` - 左上の位置.

    - #### setLocation

          public void setLocation(float x,
                                  float y)

      クラスからコピーされた説明: `Sprite`
      スプライトの左上の位置を設定します.
      オーバーライド:
        `setLocation` クラス内 `Sprite`
      パラメータ:
        `x` - X座標.
        `y` - Y座標.

    - #### setSize

          public void setSize(float w,
                              float h)

      クラスからコピーされた説明: `Sprite`
      スプライトのサイズを取得します.
      オーバーライド:
        `setSize` クラス内 `Sprite`
      パラメータ:
        `w` - スプライトの幅.
        `h` - スプライトの高さ.

    - #### setSize

          public void setSize(java.awt.Dimension size)

      クラスからコピーされた説明: `Sprite`
      スプライトのサイズを取得します. サイズはint精度に丸められます.
      オーバーライド:
        `setSize` クラス内 `Sprite`
      パラメータ:
        `size` - スプライトのサイズ.

    - #### setBounds

          public void setBounds(java.awt.geom.Rectangle2D.Float bounds)

      クラスからコピーされた説明: `Sprite`
      このスプライトの領域を設定します.
      オーバーライド:
        `setBounds` クラス内 `Sprite`
      パラメータ:
        `bounds` - スプライトの領域.

    - #### setAngle

          public void setAngle(float angle)

      オーバーライド:
        `setAngle` クラス内 `BasicSprite`

    - #### setMovingModel

          public void setMovingModel(MovingModel movingModel)

      クラスからコピーされた説明: `BasicSprite`
      移動モデルを設定します.
      オーバーライド:
        `setMovingModel` クラス内 `BasicSprite`
      パラメータ:
        `movingModel` - 移動モデル.

    - #### setVector

          public void setVector(VectorF vector)

      オーバーライド:
        `setVector` クラス内 `BasicSprite`

    - #### setSpeed

          public void setSpeed(float speed)

      オーバーライド:
        `setSpeed` クラス内 `BasicSprite`

    - #### subList

          public <T extends Sprite> java.util.List<Sprite> subList(java.lang.Class<T> type)

      スプライトの実装でフィルタリングし、サブリストを作成します.
      型パラメータ:
        `T` - スプライトの拡張クラスを指定します。
      パラメータ:
        `type` - 検索する型を指定します。
      戻り値:
        指定した型の要素を新しいリストに格納して返します。順番は この複合スプライトに格納されている”発見された順番”です。

    - #### clone

          public CompositeSprite clone()

      クラスからコピーされた説明: `BasicSprite`
      このスプライトの複製を作成します. このメソッドでは、全てのフィールドをクローニングします.
      このメソッドはサブクラスで適切にオーバーライドしてください.
      オーバーライド:
        `clone` クラス内 `BasicSprite`
      戻り値:
        このスプライトと同じ設定の新しいインスタンス.

    - #### toString

          public java.lang.String toString()

      クラスからコピーされた説明: `BasicSprite`
      スプライトの文字列表記を取得します. 文字列にはスプライトのフィールド情報が含まれています.これらの値はすべてアクセサを通して取得可能です.
      オーバーライド:
        `toString` クラス内 `BasicSprite`
      戻り値:
        スプライトの情報.