Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

javax.microedition.lcdui.game
クラス TiledLayer

java.lang.Object
  上位を拡張 javax.microedition.lcdui.game.Layer
      上位を拡張 javax.microedition.lcdui.game.TiledLayer

public class TiledLayer
extends Layer

TiledLayer は、1セットのタイル・イメージで満たすことができるセルのグリッドで構成された視覚要素です。 このクラスは、大きい仮想のレイヤーを非常に大きな Image を必要とせず作成できるようにするためのものです。 このテクニックは、一般的に非常に大きいスクロールする背景を作成する必要のある、2Dゲーム・プラットフォームで用いられます。

タイル

可変モードあるいは不変モードであるかもしれない単一の Image オブジェクトは、TiledLayer のセルを敷き詰めるために使用するタイルを提供します。 Image は一連の等しいサイズのタイルに分割します; タイルのサイズは Image と共に指定します。 以下の図で示すように、ゲーム開発者にとって最も使いやすい、いくつかの異なる割付に同じタイル・セットを格納することができます。

それぞれのタイルには固有のインデックス番号が割り当てられます。 1 のインデックスが Image の左上角に位置するタイルに割り当てます。 そして、同じ行優先で残りのタイルに付番します(インデックス・リストは最初の行、次の行、そしてその先へ向かって割り当てます)。 これらのタイルは固定タイルとみなし、それに関連しているタイルとイメージ・データとの関係は固定です。

TiledLayer のインスタンスが作成されるとき、固定タイル・セットを作成します; また、いつでも setStaticTileSet(javax.microedition.lcdui.Image, int, int) メソッドを使用することで、それを更新することができます。

さらに、固定タイル・セットに加えて、開発者はいくつかのアニメーション・タイルを定義できます。 アニメーション・タイルは、動的に固定タイルに関連する仮想タイルです。 アニメーション・タイルの見た目は、それが現在関連する固定タイルのものになります。

アニメーション・タイルは createAnimatedTile(int) を使用することで作成します。このメソッドは新しいタイルで使用するためのインデックスを返します。 アニメーション・タイルのインデックスは、常に負数で -1 から始まる連続する数値です。 一度作成すると、setAnimatedTile(int, int) メソッドを使用することで、アニメーション・タイルに関連する固定タイルを変更することができます。

セル

TiledLayer のグリッドは等しい大きさで区切られたセルで作られます。 グリッドの行と列の数はコンストラクタで指定します。そしてセルの大きさはタイルのサイズによって決定します。

それぞれのセルに関する内容はタイル・インデックスによって指定します。 正数のタイル・インデックスは固定タイルに対する参照を、そして負数のタイル・インデックスはアニメーション・タイルに対する参照を意味します。 タイル・インデックス 0 は、セルが空であることを意味します。 空のセルは完全に透明であり、TiledLayer はその領域に何も描画しません。 デフォルトで、全てのセルにタイル・インデックス 0 を設定します。

setCell(int, int, int) および fillCells(int, int, int, int, int) を使用することで、セルに関する内容を変更することができます。 いくつかのセルが同じタイルを格納することができます; しかし、単一のセルは1個以上のタイルを格納することはできません。 以下の例は TiledLayer を使用することで、どのように簡単に背景を作成するのかを例示します。

この例では、水の領域は初めに固定タイル 5 に関連する -1 のインデックスを持つアニメーション・タイルで満たします。 水の全領域は、setAnimatedTile(-1, 7) を使用することで関連する固定タイルを変更することで、アニメーションさせることができます。

TiledLayer のレンダリング

マニュアルで paint メソッドを呼び出すことによって TiledLayer をレンダリングすることができます。 また、LayerManager オブジェクトを使用することで自動的にレンダリングすることができます。

paint メソッドは Graphics オブジェクトのクリップ領域全体に TiledLayer のレンダリングを試みます; Graphics オブジェクトの原点に相対する現在位置 (x, y)TiledLayer の左上角としてレンダリングします。 レンダリングされる領域は、Graphics オブジェクトにクリップ領域を設定することで、それにしたがって制御することができます。

導入されたバージョン:
MIDP 2.0

コンストラクタの概要
TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight)
          新しい TiledLayer を作成します。
 
メソッドの概要
 int createAnimatedTile(int staticTileIndex)
          新しいアニメーション・タイルを作成し、新しいアニメーション・タイルを参照するインデックスを返します。
 void fillCells(int col, int row, int numCols, int numRows, int tileIndex)
          指定したタイルでセルの領域を埋めます。
 int getAnimatedTile(int animatedTileIndex)
          アニメーション・タイルが参照しているタイルを取得します。
 int getCell(int col, int row)
          セルの内容を取得します。
 int getCellHeight()
          単一セルの高さをピクセル単位で取得します。
 int getCellWidth()
          単一セルの幅をピクセル単位で取得します。
 int getColumns()
          TiledLayer グリッドの列数を取得します。
 int getRows()
          TiledLayer グリッドの行数を取得します。
 void paint(Graphics g)
          TiledLayer を描画します。
 void setAnimatedTile(int animatedTileIndex, int staticTileIndex)
          指定した固定タイルをアニメーション・タイルに対応させます。
 void setCell(int col, int row, int tileIndex)
          セルの内容を設定します。
 void setStaticTileSet(Image image, int tileWidth, int tileHeight)
          固定タイルのセットを変更します。
 
クラス javax.microedition.lcdui.game.Layer から継承されたメソッド
getHeight, getWidth, getX, getY, isVisible, move, setPosition, setVisible
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

TiledLayer

public TiledLayer(int columns,
                  int rows,
                  Image image,
                  int tileWidth,
                  int tileHeight)

新しい TiledLayer を作成します。

TiledLeayer のグリッドは、セルの高さ rows とセルの幅 columns となります。 グリッドの全てのセルは初めに空(すなわち、全てタイル・インデックス 0)に設定します。 setCell(int, int, int) および fillCells(int, int, int, int, int) を使用することでグリッドの内容を変更することができます。

TiledLayer に設定される固定タイルは tileWidth×tileHeight の大きさの各タイルを持っている指定された Image から作成します。 ソース・イメージの幅はタイルの幅の整数倍でなければなりません。同様に、ソース・イメージの高さはタイルの高さの整数倍でなければなりません; そうでなければ、IllegalArgumentException を throw します;

setStaticTileSet(javax.microedition.lcdui.Image, int, int) を使用することで固定タイル・セット全体を変更することができます。 メモリを使用し時間がかかるため、これらのメソッドは控えめに使用すべきです。 タイルの見た目をアニメーションさせるためには、可能であれば常にアニメーション・タイルを代わりに用いるべきです。

パラメータ:
columns - TiledLayer の幅を表すセルの数を渡します。
rows - TiledLayer の高さを表すセルの数を渡します。
image - 固定タイルのセットを作成するために使用する Image を渡します。
tileWidth - 単一のタイルの幅をピクセル数で渡します。
tileHeight - 単一のタイルの高さをピクセル数で渡します。
例外:
NullPointerException - パラメータ imagenull の場合に throw します。
IllegalArgumentException - パラメータ rows または columns が1未満か、image の幅が tileWidth の整数倍ではないか、image の高さが tileHeight の整数倍ではない場合に throw します。
メソッドの詳細

createAnimatedTile

public int createAnimatedTile(int staticTileIndex)

新しいアニメーション・タイルを作成し、新しいアニメーション・タイルを参照するインデックスを返します。 それは、初めに指定されたタイル・インデックス(固定タイルか 0 のどちらか)に対応します。

アニメーション・タイルのためのインデックスは常に負数です。 最初のアニメーション・タイルにはインデックス -1、次は -2 などのような割り当てを行います。

パラメータ:
staticTileIndex - 対応するタイルのインデックスを渡します(0 か有効な固定タイルのインデックスでなければなりません)。
戻り値:
新たに作成したアニメーション・タイルのインデックスを返します。
例外:
IndexOutOfBoundsException - パラメータ staticTileIndex が無効な場合に throw します。

setAnimatedTile

public void setAnimatedTile(int animatedTileIndex,
                            int staticTileIndex)

指定した固定タイルをアニメーション・タイルに対応させます。

パラメータ:
animatedTileIndex - アニメーション・タイルのインデックスを渡します。
staticTileIndex - 対応させるタイルのインデックス(0 か有効な固定タイルのインデックスでなければなりません)を渡します。
例外:
IndexOutOfBoundsException - パラメータ animatedTileIndex または staticTileIndex が無効ならば throw します。
関連項目:
getAnimatedTile(int)

getAnimatedTile

public int getAnimatedTile(int animatedTileIndex)

アニメーション・タイルが参照しているタイルを取得します。

現在アニメーション・タイルに対応しているタイルのインデックスを返します。

パラメータ:
animatedTileIndex - アニメーション・タイルのインデックスを渡します。
戻り値:
アニメーション・タイルが参照しているタイルのインデックスを返します。
例外:
IndexOutOfBoundsException - パラメータ animatedTileIndex が無効な場合に throw します。
関連項目:
setAnimatedTile(int, int)

setCell

public void setCell(int col,
                    int row,
                    int tileIndex)

セルの内容を設定します。

内容は固定タイルのインデックス、アニメーション・タイルのインデックスを設定することができます。またはそれは空(インデックス 0)にすることもできます。

パラメータ:
col - 設定するセルの列を渡します。
row - 設定するセルの行を渡します。
tileIndex - セルに置くタイルのインデックスを渡します。
例外:
IndexOutOfBoundsException - パラメータ tileIndex に対応するタイルのインデックスがないか TiledLayer のグリッドの境界外を col または row が指しているなら throw します。
関連項目:
getCell(int, int), fillCells(int, int, int, int, int)

getCell

public int getCell(int col,
                   int row)

セルの内容を取得します。

現在表示対象となるセルの中の、固定タイルまたはアニメーション・タイルのインデックスを取得します。 セルが空ならば、インデックスとして 0 を返します。

パラメータ:
col - チェックするセルの列を渡します。
row - チェックするセルの列を渡します。
戻り値:
セルの中のインデックスを返します。
例外:
IndexOutOfBoundsException - TiledLayer グリッドの境界外をパラメータ col または row が指している場合に throw します。
関連項目:
setCell(int, int, int), fillCells(int, int, int, int, int)

fillCells

public void fillCells(int col,
                      int row,
                      int numCols,
                      int numRows,
                      int tileIndex)

指定したタイルでセルの領域を埋めます。

セルは固定タイルのインデックス、アニメーション・タイルのインデックスで埋めることができます。またはそれは空(インデックス 0)にすることもできます。

パラメータ:
col - 指定領域の左上セルの列を渡します。
row - 指定領域の左上セルの行を渡します。
numCols - 指定領域の列数を渡します。
numRows - 指定領域の行数を渡します。
tileIndex - 指定した領域の全てのセルに置くタイルのインデックスを渡します。
例外:
IndexOutOfBoundsException - パラメータによって指定された領域が TiledLayer グリッドの境界を越えているか、パラメータ numCols または numRows がゼロ未満か、パラメータ tileIndex に対応するタイルのインデックスがないならば throw します。
関連項目:
setCell(int, int, int), getCell(int, int)

getCellWidth

public final int getCellWidth()

単一セルの幅をピクセル単位で取得します。

戻り値:
TiledLayer グリッドの単一セルの幅をピクセル数で返します。

getCellHeight

public final int getCellHeight()

単一セルの高さをピクセル単位で取得します。

戻り値:
TiledLayer グリッドの単一セルの高さをピクセル数で返します。

getColumns

public final int getColumns()

TiledLayer グリッドの列数を取得します。 TiledLayer の全幅ピクセル数は Layer.getWidth() を呼び出すことによって取得することができます。

戻り値:
TiledLayer グリッドの列における幅を返します。

getRows

public final int getRows()

TiledLayer グリッドの行数を取得します。 TiledLayer の全高ピクセル数は Layer.getHeight() を呼び出すことによって取得することができます。

戻り値:
TiledLayer グリッドの行における高さを返します。

setStaticTileSet

public void setStaticTileSet(Image image,
                             int tileWidth,
                             int tileHeight)

固定タイルのセットを変更します。

現在の固定タイルのセットは新しいタイルのセットで置き換えられます。 タイルがイメージからどのように作成されるかに関してはコンストラクタ TiledLayer(int, int, Image, int, int) を参照してください。

新しい固定タイルのセットが以前の固定タイルと同じかそれ以上のタイルを設定すると、アニメーション・タイルとセルの内容は保持します。 そうでなければ、グリッドに関連する内容はクリア(全てのセルにインデックス 0 を格納)され、全てのアニメーション・タイルは削除します。

パラメータ:
image - 固定タイルのセットを作成するために使用する Image を渡します。
tileWidth - 単一のタイルの幅をピクセル数で渡します。
tileHeight - 単一のタイルの高さをピクセル数で渡します。
例外:
NullPointerException - パラメータ imagenull の場合に throw します。
IllegalArgumentException - パラメータ tileHeight または tileWidth1 未満か、image の幅が tileWidth の整数倍ではないか、image の高さが tileHeight の整数倍でなければ throw します。

paint

public final void paint(Graphics g)

TiledLayer を描画します。 全ての TiledLayerGraphics オブジェクトのクリップ領域にしたがってレンダリングします。 Graphics オブジェクトの原点に相対する TiledLayer の現在の位置を TiledLayer の左上角としてレンダリングします。 Layer.getX()Layer.getY() を呼び出すことで TiledLayer の左上角の現在の位置を取得できます。 クリップ領域、および/または、転移の適切な使用によって、TiledLayer の任意の領域をレンダリングすることが可能になります。

TiledLayerImage が可変モードであるなら、TiledLayer は現在の内容を使用してレンダリングを行います。

定義:
クラス Layer 内の paint
パラメータ:
g - TiledLayer を描画する Graphics オブジェクトを渡します。
例外:
パラメータ gnull ならば throw します。

Unofficial
"CLDC 1.1
+ MIDP 2.0"
API Reference.
(日本語版)

公式仕様書原文の著作権表記等(※):

Mobile Information Device Profile Specification ("Specification")
Version: 2.0
Status: FCS
Release: November 5, 2002

Copyright 2002 Sun Microsystems, Inc. and Motorola, Inc.
All rights reserved.
※ただしこの API リファレンスは英語仕様を一語一句正確に翻訳したものではなく、一度私が英語の仕様原文を読んだ上で元の意味と構造をなるべく保つように書き起こしたものです。このため一部は完全に異なる説明となっています。また CLDC 1.1 部分は同仕様の範囲外であるため、まったく参考とはしていません。

※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。

この API リファレンスは仕様書の日本語版という位置づけでは作成していませんし、仕様書ほど厳格でもありません。MUST、SHOULD、MAY などの仕様の条件を強調する文を維持していません(反映すらしていない個所もあります)。仮想マシンおよび MIDP の実装のために使用することは避けてください。そのような用途には必ず公式仕様書原文そのものを用いるべきです。
この API リファレンスに記載されている内容は"さかきけい"が Sun Microsystems, Inc や Motorola, Inc、Java Community Process が公開している各種公式資料を元に、独自に調査・編集したものであり、Sun Microsystems, Inc や Motorola, Inc、Java Community Process 等とは一切関係ありません。したがってこの API リファレンスに関する問い合わせを関係各社等に対して行うことを固く禁じます。
また、記載された内容には既知か否かに関らず誤りが含まれる可能性があり、一切保証はありません。本 API リファレンスを使用した結果、不利益が生じたとしても"さかきけい"は一切の責任を負いません。
許可無く公開/非公開および Internet/Intranet/LAN を問わず他サイトに転載すること、複写および複製すること、ローカル・ファイル等に保存することを禁じます。


Copyright© 2001-2002,2005-2009,2011 by KEI SAKAKI.
ALL RIGHTS RESERVED.
無断転載を禁じます。

Unofficial "CLDC 1.0 + MIDP 1.0" API Reference はこちらです。