利用libgdx开发Android游戏(一)

环境配置

(1)首先下载Android SDK,下载地址为:http://deveoper.android.com/sdk/index.html,下载完成之后,解压缩,得到一个文件夹adt-bundle-linux-x86,包含eclipse和sdk,打开eclipse,在联网的情况下,选中"Android SDK Manager"按钮,更新SDK。

(2)下载libgdx,下载地址为:http://code.google.com/p/libgdx/downloads/list,选中最新版下载即可。下载完成之后,解压缩可以得到一个libgdx文件夹,里面包含libgdx所需的一些jar文件。

(3)新建一Android工程,将libgdx文件夹下的gdx.jar、gdx-backend-android.jar、armeabi、armeabi-v7a拷贝工程的libs文件夹下,如不存在libs文件夹,可以新建一个。然后在工程上单击右键,选中Build Path->Configure Build Path,Libraries下选择Add JARS,将gdx-backend-android.jar和gdx.jar添加到工程中。

(4)编写一个例子,测试一下搭建环境。

FirstGame类代码如下:

package com.game.basic;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class FirstGame implements ApplicationListener {

private SpriteBatch batch;

@Override
public void create() {
// TODO Auto-generated method stub
batch = new SpriteBatch();
}

@Override
public void dispose() {
// TODO Auto-generated method stub

}

@Override
public void pause() {
// TODO Auto-generated method stub

}

@Override
public void render() {
// TODO Auto-generated method stub
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);// 清屏
batch.begin();
batch.end();
}

@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void resume() {
// TODO Auto-generated method stub

}

}
 
MainActivity类代码如下:
package com.game.basic;

import com.badlogic.gdx.backends.android.AndroidApplication;

import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends AndroidApplication {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initialize(new FirstGame(),false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    
}
(5)运行,效果为一黑屏。
 
下面让app显示一张图片,截取一张大小为2的幂的图片,比如,512*512的jpg格式图片,将其拷贝到工程目录下的assets下,因为assets本身就是用来存放资源的,而且其中的内容并不会在R文件中生成对应的ID,因此比较适合存放图片。接下来修改FirstGame类代码如下:
 package com.game.basic;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class FirstGame implements ApplicationListener {

private SpriteBatch batch;
private Texture texture;
@Override
public void create() {
// TODO Auto-generated method stub
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("image.jpg"));
}

@Override
public void dispose() {
// TODO Auto-generated method stub
batch.dispose();
texture.dispose();
}

@Override
public void pause() {
// TODO Auto-generated method stub

}

@Override
public void render() {
// TODO Auto-generated method stub
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);// 清屏
batch.begin();
batch.draw(texture,200,200);
batch.end();
}

@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub

}

@Override
public void resume() {
// TODO Auto-generated method stub

}

}
 运行,效果如下:
最后让程序界面上显示一行文字:Read the fucking code!
FristGame修改如下:
package com.game.basic;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class FirstGame implements ApplicationListener {
  private SpriteBatch batch;
 // private Texture texture;
  private BitmapFont bf;
public void create()
{
  batch = new SpriteBatch();
 // texture = new Texture(Gdx.files.internal("image.jpg"));
  bf = new BitmapFont();
}
public void dispose()
{
  batch.dispose();
  bf.dispose();
 // texture.dispose();
}
public void pause() {
}

public void render() {
  Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);// 清屏
  Gdx.gl.glClearColor(1f,1f,1f,0f);
  batch.begin();
 // batch.draw(texture,200,200);
  bf.draw(batch,"Read the fucking code!",Gdx.graphics.getWidth()/2,Gdx.graphics.getHight()/2);
  batch.end();
}
public void resize(int arg0, int arg1) {
}
public void resume() {
}
}
程序运行后,效果如下:

posted on 2012-12-24 17:14  金蛇郎君的世界  阅读(423)  评论(0编辑  收藏  举报

导航