|
Unofficial "CLDC 1.1 + MIDP 2.0" API Reference. (日本語版) |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.microedition.lcdui.game.LayerManager
public class LayerManager
LayerManager
は一連の Layer
を管理します。
LayerManager
に加えられた複数の Layer
を、適切な順序でそれぞれの Layer
の正確な領域を自動的にレンダリングすることで、レンダリングに関するプロセスを簡素化します。
LayerManager
は Layer
の追加、挿入、削除することができる順序付きリストを維持します。
Layer
につけられたインデックスがZオーダーに相当します。
最も高いインデックスを持つ Layer
がユーザーから遠く(奥)にあり、インデックス 0
の Layer
がユーザーの最も近く(手前)にあります。
インデックス・リストは常に隣接しています。
すなわち、Layer
を削除すると、その後の Layer
群のインデックス・リストは連続を維持するように調整されます。
LayerManager
クラスはゲームの Layer
群がスクリーンでどのようにレンダリングされるかを制御するいくつかの機能を提供します。
視点ウインドウは LayerManager
の座標系に相対する可視領域とその位置およびサイズを制御します。
視点ウインドウの位置を変更すると、ユーザー視点の画面をスクロールあるいはカメラをぐるっとまわして撮影するような状態などの効果表現をすることができます。
例えば右へスクロールするには、シンプルに視点ウインドウの位置を右に移動させます。
視点ウインドウのサイズは、ユーザー視点がどれくらいの大きさになるかを制御し、通常はデバイスのスクリーンに適切なサイズで固定します。
この例では視点ウインドウを 85
×85
ピクセルに設定し、LayerManager
の座標系 (52, 11)
に位置しています。
Layer
群は LayerManager
の原点からのそれぞれ相対的な位置に投影を行います。
paint(Graphics, int, int)
メソッドは視点ウインドウがスクリーンに相対して何処にレンダリングされるかを制御する位置 (x, y)
を含みます。
これらのパラメータを変更すると、視点ウインドウに関する内容は変化せず、それは視点ウインドウがレンダリングされる位置を変更します。
この位置は Graphics
オブジェクトの原点に相対していて、その結果、その位置は Graphics
オブジェクトの転移属性の影響を受けることがあることに注意してください。
例えば、ゲームが現在のスコアを表示するためにスクリーンの上部を使用するなら、視点ウインドウはスコアのための十分なスペースを提供するために (17, 17)
にレンダリングするようにすることができます。
コンストラクタの概要 | |
---|---|
LayerManager()
新しい LayerManager を作成します。 |
メソッドの概要 | |
---|---|
void |
append(Layer l)
この LayerManager に Layer を追加します。 |
Layer |
getLayerAt(int index)
指定されたインデックスにある Layer を取得します。 |
int |
getSize()
この LayerManager の Layer 群の数を取得します。 |
void |
insert(Layer l,
int index)
この LayerManager における指定されたインデックスに新しい Layer を挿入します。 |
void |
paint(Graphics g,
int x,
int y)
指定された位置に LayerManager の現在の視点ウインドウをレンダリングします。 |
void |
remove(Layer l)
この LayerManager から指定された Layer を削除します。 |
void |
setViewWindow(int x,
int y,
int width,
int height)
LayerManager 上の視点ウインドウを設定します。 |
クラス java.lang.Object から継承されたメソッド |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public LayerManager()
新しい LayerManager
を作成します。
メソッドの詳細 |
---|
public void append(Layer l)
この LayerManager
に Layer
を追加します。
既存の Layer
群リストに Layer
を追加するため、それは最も高いインデックスを持つことになります(すなわち、それはユーザーから最も遠いことを意味します)。
それが既に加えられているなら、Layer
は最初にこの LayerManager
から削除します。
l
- 加える Layer
を渡します。
NullPointerException
- パラメータ l
が null
の場合に throw します。insert(javax.microedition.lcdui.game.Layer, int)
,
remove(javax.microedition.lcdui.game.Layer)
public void insert(Layer l, int index)
この LayerManager
における指定されたインデックスに新しい Layer
を挿入します。
それが既に加えられているなら、Layer
は最初にこの LayerManager
から削除します。
l
- 挿入する Layer
を渡します。index
- 新しい Layer
を挿入する位置をインデックスで渡します
NullPointerException
- パラメータ l
が null
の場合に throw します。
IndexOutOfBoundsException
- パラメータ index
が 0
未満かあるいはこの LayerManager
に既に加えられた Layer
の数を超えているならば throw します。append(javax.microedition.lcdui.game.Layer)
,
remove(javax.microedition.lcdui.game.Layer)
public Layer getLayerAt(int index)
指定されたインデックスにある Layer
を取得します。
index
- 希望する Layer
のインデックスを渡します。
Layer
を返します。
IndexOutOfBoundsException
- パラメータ index
が 0
未満かあるいはこの LayerManager
に既に加えられた Layer
の数を超えているならば throw します。public int getSize()
この LayerManager
の Layer
群の数を取得します。
Layer
群の数を返します。public void remove(Layer l)
この LayerManager
から指定された Layer
を削除します。
指定された Layer
がこの LayerManager
に加えられていなければ、このメソッドは何もしません。
l
- 削除する Layer
を渡します。
NullPointerException
- パラメータ l
が null
の場合に throw します。append(javax.microedition.lcdui.game.Layer)
,
insert(javax.microedition.lcdui.game.Layer, int)
public void paint(Graphics g, int x, int y)
指定された位置に LayerManager
の現在の視点ウインドウをレンダリングします。
LayerManager
は、インデックスの逆順にそれぞれのレイヤーをレンダリングします。その結果、正確なZオーダーを実装します。
完全に視点ウインドウの外側にあるレイヤーはレンダリングされません。
このメソッドに渡された座標は、LayerManager
の視点ウインドウが Graphics
オブジェクトの原点に相対して何処にレンダリングされるかを決定します。
例えば、ゲームが現在のスコアを表示するためにスクリーンの上部を使用するかもしれないため、その領域の下のレイヤーをレンダリングするために、視点ウインドウは位置 (0, 20)
にレンダリングされるかもしれません。
Graphics
オブジェクトの原点からの相対であるため、Graphics
オブジェクトの原点を移動させることは、視点ウインドウがスクリーンの何処でレンダリングされるかの変更を意味します。
Graphics
オブジェクトのクリップ領域は、視点ウインドウと同じサイズを持っている矩形と交差する (x, y)
に位置します。
LayerManager
がそのときに Graphics
オブジェクトの転移を行うため、点 (x, y)
は LayerManager
の座標系で視点ウインドウの位置に対応します。
Layer
群はそのとき、適切な順序でレンダリングされます。
このメソッドが返される前に、Graphics
オブジェクトの転移とクリップ領域は元の値に復元します。
レンダリングは Graphics
オブジェクトによるクリップ領域と転移の影響を受けることがあります。
したがって、クリップ領域があまり広くないのなら、指定された視点ウインドウの一部だけをレンダリングすることもできます。
性能の理由から、このメソッドは目に見えないか、または Graphics
オブジェクトのクリップ領域の完全に外側にレンダリングされる Layer
群を無視するかもしれません。
Graphics
オブジェクトの属性は Layer
群の paint
メソッドの呼び出しの間は既知の状態に復元しません。
クリップ領域は Layer
の境界を越えて拡張されるかもしれません;
レンダリング操作が境界の中で実行されることを保証するのは Layer
の責任です。
g
- LayerManager
を描画するための Graphics
オブジェクトを渡します。x
- Graphics
の転移された原点から相対した視点ウインドウをレンダリングする水平位置を渡します。y
- Graphics
の転移された原点から相対した視点ウインドウをレンダリングする垂直位置を渡します。
NullPointerException
- パラメータ g
が null
ならば throw します。setViewWindow(int, int, int, int)
public void setViewWindow(int x, int y, int width, int height)
LayerManager
上の視点ウインドウを設定します。
視点ウインドウは paint
メソッドが呼び出されたとき、LayerManager
が描画する矩形を指定します。
これにより、開発者は LayerManager
の座標系に相対する視点ウインドウの位置と同様に可視領域のサイズを制御できます。
設定はこのメソッドへ別の呼び出しによって変更されるまで、視点ウインドウは有効な状態が維持されます。
デフォルトで、視点ウインドウは LayerManager
の座標系の位置 (0, 0)
にあります。そして、その幅と高さはともに Integer.MAX_VALUE
に設定されます。
x
- LayerManager
の原点に相対した視点ウインドウの水平位置を渡します。y
- LayerManager
の原点に相対した視点ウインドウの垂直位置を渡します。width
- 視点ウインドウの幅を渡します。height
- 視点ウインドウの高さを渡します。
IllegalArgumentException
- パラメータ width
あるいは height
が 0
未満の場合に 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 部分は同仕様の範囲外であるため、まったく参考とはしていません。 ※仕様書のライセンス上、問題は無いと考えておりますが、万が一問題があるとお考えの関係者の方がいらっしゃいましたらメールにて連絡をいただけると幸いに存じます(第一言語に日本語、第二言語に英語を希望しますが、返信は基本的に日本語で行います)。 |