2011年1月アーカイブ

Androidアプリを実機デバッグしようと思って、ADBドライバをダウンロード。

これを  android-sdk-windows の usb_driver に入れて・・・

と思ったら、usb_driver がない。

そんなときは、解凍してできたフォルダをusb_driverにリネームしてしまえばOKです。

そして、それを android-sdk-windows に置いて、インストール実行。


SurfaceView でループ処理をするときに、Thread を使う。

メインのスレッドとは別のスレッドが実行されるらしいけど、良く分からなかった。

でも、ちょっと分かって来たので、少し書いて置く。


まず、Thread は、Android の機能と言うより、Java がもともと持っている機能のようです。

スレッドを作ると、メインのスレッドとは別に、並列のように実行されるらしいです。実行される内容は、run の中身です。

自作スレッドは、主に、次のようなライフサイクルを持っています。


■Thread のライフサイクル
1.new で、インスタンスを作成すると、「初期状態」になる。
2.start で、「実行可能状態」になる。
3.「実行可能状態」にある時は、自動で「準備」と「実行中」を繰り返す。
4.「実行中」は、run の中が順番に実行される。
5.sleep で、「実行不可能状態」になる。
6.「実行不可能状態」は、時間が来たら、「実行可能状態」になる。
7.run の中が最後まで実行されると、このスレッドは終了する。


要は、start で、run が実行されて、run が最後まで実行されると終了します。

また、この間も、メインの処理は実行さ続けます。

サンプルを見たり、ネットで調べたりしてると、ぼんやりとSurfaceViewが分かってきた。


SurfaceView, SurfaceHolder, Thread, Callback, Runnable がポイントらしい。

また、Callback に、SurfaceCreated, SurfaceChanged, SurfaceDestroyed があって、
Runnable に、run があるらしい。

Thread は、中心的な役割をしてるっぽいけど、良く分からない。


で、とりあえず、動くプログラムは書けるようになった。

でも、最初に書いてみたプログラムでは、画面が点滅してしまった。

どうも、原因はダブルバッファらしい。

A画面に描いた物と、B画面に描いた物が交互に表示されて、点滅してるように見える。


毎回、背景を含めて全部描けば良い。

でも、前の画面に、次の図形を足していくような描写では、ちょっと難しい。
画面サイズのBitmapを作って、図形をBitmapに描写してから、そのBitmapを表示するという方法が使えるらしい。

ただ、なんとなく無駄が多いような気がする。


変更したい所だけダブルバッファを使う、みたいな感じが良さそう。

Rect rect = new Rect(x0,y0,x1,y1);
Canvas canvas = holder.lockCanvas(rect);
何か描く
holder.unlockCanvasAndPost(canvas);


どれにしても、A面、B面を常に意識しておかないと、変な表示になりそう。

もっと良い方法があるのかもしれない。
Viewを使ったループ処理は、使えるようになった。

でも、普通にやったのでは、ループ1回あたりの時間にバラツキがあるらしい。

100ms後に次の実行を設定しても、きちんと100ms後には実行されない。

ゲームでキャラを歩かせようとか思ったとき、速く動いたり、ゆっくり動いたりするのは、かなり気持ち悪い。


どうしようかと思ってたら、SurfaceViewとか言う、Viewのようなものがあるらしい。

SurfaceVieは、Viewよりも処理が速くて、ゲームに向いているらしい。

サンプルを見てみると、描写にCanvasが使えるみたいだし、ループ処理もwhile()が使えるみたいで、かなり良さそう。

これで、もともとの問題が解決するかは不明だけど、とりあえず勉強してみることにした。


ということで、いろいろ調べてみたけど、、、今ひとつ分からない。

全体の流れは、どうなってるんだ!?

MTBlog50c2BetaInner

ランダムブログ

2014年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近のコメント

MovableType(MT)テンプレート 無料(フリー)
Powered by Movable Type 5.03