FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » ゲーム »Android にメッセージウィンドウを移植中…

Android にメッセージウィンドウを移植中…  



Android エミュレータ

 ADV型のメッセージウィンドウを付けると少しゲームっぽくなるね。


 やっぱりこの機能はなかなか面倒くさい(笑)。文字列の幅や高さを計算するのに FontMetrics と言うものを使ってるんだが、Applet と Android では取得オブジェクトが違っていた。

 Applet では Font オブジェクトから取得するんだけど、Android では Paint オブジェクトから取得するみたい。というのもフォントの設定や色も Paint オブジェクトなんだよね。図形を描いたりする時も Paint オブジェクトを使うから、ちょっとややこしい気がする。

 また基本的に考え方は変わらないけど、取得できる値も微妙に違う。プロパティ値はどうやらベースラインからの距離になっているようだ。Applet は大きさって感じで正の値だったけど、Android は負の値も出る。そのまま移植したら、当然画面が変になった(笑)。


FontMetrics 図解

 調べてみたら、こんな感じだったけど、top, ascent は負の値で出るね。baseline からの距離みたい。あと float 型なので、値が細かい。そのまま使ったら、微妙に文字列間隔などが綺麗に並んで見えなかったので、小数点以下切り捨てて、整数型として使ってみた。そしたら綺麗に並んで見えた。

 あと、getFontMetrics(null) で得られるフォントの高さは、プロパティ:ascent と descent の距離を足したものと同値になるね。ascent は負の値なので、height = descent - ascent で計算すると良い。Applet には getHeight() メソッドがあったから、計算の必要は無かったけどね。

 こういうものはやってみないとわからないので、コピペではやっぱり移植はできないね~。Java のライブラリももっと統一感出ればやり易いんだけどね。内部の値を一つ一つ確認していくのは骨が折れる。まだまだ時間はかかりそう…。


※イラスト:こばP さん


スポンサーサイト

category: ゲーム

thread: ゲーム開発

janre: コンピュータ

tag: グラフィックス 
tb: 0   cm: --



トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/81-85681bbc
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop