Java

AndroidとJava8

実はAndroidでJava8が使えるという噂を耳にしたのでやってみた。気のせいだった。なんやねん。ラムダ…

hypot

sqrt(x^2+y^2)を求めたいとき、 Javaなら l=Math.sqrt(x*x+y*y); って書いてたけど、この操作には専用のメソッドが用意されていた。 初めて知った。 l=Math.hypot(x,y); 得られる値は一緒。ちょっとだけ短く書ける。 あと計算途中のオーバー・アンダーフロー…

HandlerThreadで非同期処理

Androidで、メインスレッドとは別にHandlerThreadを立てて、随時そっちにメッセージを投げる。 メッセージはどんどんキューに溜められて行って、古い物から一つづつ処理されていく。 同じHandlerThreadに投げられたメッセージが同時に処理されることはない。…

VBOを使った2D図形の描画

VBO(頂点バッファオブジェクト)。 3Dポリゴンの頂点情報をあらかじめGPUのメモリに置いておくことで 描画を高速化する。 自分が作っているゲームは2Dで、 しかも大半が画像ファイルを元にしたテクスチャなのだけど、 直線とか四角形とかの基本的な図形はやっ…

画像に指定の色を重ね合わせて描画

Android用2Dゲームで画像を高速で描画するために、OpenGL ESのDraw Texture Extensionが使用できる。基本的な使い方はこの本のサンプルコードあたりが参考になる。 初歩からわかるAndroid最新プログラミング 元画像…というかテクスチャの、「どの部分を切り…

singletonとstatic

ところで、先ほど書いたAndroidアプリでBGMを流す処理、 今開発しているゲームではBGMクラスを作って 中身を全部staticにして使っている。 どのクラスからでもパパッと使えるオブジェクトとして、 staticにする方法以外にsingletonパターンがある。 自分は何…

Androidアプリで前奏より後だけループするBGMを流す

趣味でAndroid向けアクションゲームを作っている。年末年始を使ってBGMとSEを組み込んでいた。AndroidでのBGM再生にはMediaPlayerクラスを使う。res/raw/以下にoggファイルを突っ込む(mp3でもいいけど端末によってはあまり嬉しくないことがあるとか?)とかそ…