石橋を叩いて壊すページ

地図にカーソルを置く

前回の記事で地図の描画方法を書いたが、
地図には他にもカーソルを置くことができる。

もっとも、カーソルを扱うMapCursorクラスはコンストラクタが既にDeprecated(非推奨)なので、
必要がなければあまり触らないほうがよいだろう。

カーソルを置くのはとても簡単で、MapCursorCollectionクラスに適当にカーソルをつっこんで
MapCanvasでsetCursorsすればよい。

(冗長なのでrender(…)メソッドだけ抜粋)
//地図を描画する
@Override
public void render(MapView view, MapCanvas canvas, Player player) {

    MapCursorCollection cursors=new MapCursorCollection();

    cursors.addCursor(new MapCursor((byte)32, (byte)16, (byte)0, MapCursor.Type.BLUE_POINTER.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)32, (byte)2, MapCursor.Type.GREEN_POINTER.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)48, (byte)4, MapCursor.Type.RED_POINTER.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)64, (byte)6, MapCursor.Type.WHITE_CROSS.getValue(), true));
    cursors.addCursor(new MapCursor((byte)32, (byte)90, (byte)8, MapCursor.Type.WHITE_POINTER.getValue(), true));

    canvas.setCursors(cursors);
}



上のコードを実行するとこうなる。

理由はわからないが、どうやら地図にはカーソルを3~4個しか置くことができないようだ。
このため、コードでは5つのカーソルを一度に扱っているが、実際には上記の1枚目のスクリーンショットのように
自分が今いる場所と他に3つのカーソルだけしか表示されなかった。
スクリーンショットを2枚撮ったのは、一度に表示できなかった残り2つのカーソルをコードを書き換えて別に撮ったからだ。

MapCursorのコンストラクタに渡すカーソルの座標は、地図の中心が(0,0)で、左上が(-128,-128)になるようだ。
また、マップの縮尺を変更しても、左上は常に(-128,-128)だった。
MapCursorのコンストラクタの3つ目の引数はカーソルの向きで、ゼロだと下向きになり、以後時計周りに16方位を指定できる。

なぜDeprecatedなのか、なぜカーソルの表示数に上限があるのかわからないが、
カーソルの色や形はとてもわかりやすいので、うまく使えば宝探しやレーダーがわりに使うこともできそうだ。

この記事を評価

この記事にコメント

  1. ...

【この記事にコメント】
お名前:
コメント:

Menu