Please wait...

最新のお知らせ・ニュース


androidゲームプログラミング 基本編
<公開日:2012年01月13日>

SurfaceViewでゲームを作るときの基本的な書き方を紹介する。

[java]
public class gameactivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new MainGame(this));
}
}
[/java]

まずActivity側でSurfaceViewのインスタンスを生成してsetCotentView()で画面に表示する。
そのままでは上にタイトルバーとタスクバーがついていて邪魔なのでsetContentViewする前の2行で全画面にしている。

[java]
public class MainGame extends SurfaceView implements SurfaceHolder.Callback,Runnable {
private Canvas canvas;
private Thread mainLoop;
private SurfaceHolder holder;

public MainGame(Context context) {
super(context);
holder=getHolder();
holder.addCallback(this);
}

@Override
public void run() {
while (mainLoop!=null) {
canvas=getHolder().lockCanvas();
canvas.drawColor(Color.WHITE);
getHolder().unlockCanvasAndPost(canvas);
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int arg1, int arg2, int arg3) {
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
canvas = holder.lockCanvas();
canvas.drawColor(Color.BLUE);
holder.unlockCanvasAndPost(canvas);
mainLoop = new Thread(this);
mainLoop.start();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mainLoop = null;
}}

[/java]
SurfaceViewが生成されたときに呼び出されるsurfaceCreated()の中でmainLoopをスタートさせておりここでrun()が呼び出される。
run()のwhile文の中はmainLoopが終了するまで無限ループになっておりこの中で描画処理を行なっていく。今回は白く塗っているだけ。次回からはゲーム部分の処理を実装していく。











どんな小さな事でもまずはお気軽にご相談下さい。お見積もりはいつでも無料で承ります。

この度は数あるホームページ制作会社から、当社のサービスに関心を示して頂き、本当にありがとうございます。 きっと貴社は、信頼できる良いホームページ作成会社をお探しの事と思います。当社は、お客様に心から喜んでいただけるよう「誠実さ」「優しさ」を心がけて仕事に励んでいます。 お客さまの思い描くホームページが完成するよう、精一杯お手伝いさせて頂きますので、ホームページ作成は是非当社にお任せ下さい。

お問い合わせはこちら

富山県・地域密着だからできる安心・丁寧なホームページ作りをお約束します。
Copyright (C) 2016 Awake Computer All Rights Reserved.