libgdx游戏引擎(二)之ApplicationListener接口介绍

    为了初始化Application必须实现ApplicationListener接口,它用来更新游戏状态(即逻辑),渲染界面,暂停游戏,保存状态,释放资源等。它也有一个处理Application声明周期事件的地方。每个应用,不管后台平台版本都必须实现ApplicationListener接口。所有平台都必须要实现这个接口。


        AndroidApplication继承自Activity,起到了一个Activity的作用,但是我们并不在这个”Activity“中做太多的工作(当然可以做一些保存Context上下文之类的工作),实际的显示工作交给了一个实现了ApplicationListener接口的类来实现的,它有所有我们需要的功能:创建,渲染等。所以实际的情况是,我们在游戏中的大部分实际绘图工作都是放在这个页面进行的。

       我们在上一讲的基础上,在屏幕上打印一些标识,代码如下:

package com.lichunan.libgdx.game;

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

public class FirstGame implements ApplicationListener {
	
	private SpriteBatch spriteBatch;
	private BitmapFont bf;
	
	@Override
	public void create() {
		spriteBatch = new SpriteBatch();
		bf = new BitmapFont();
	}
	
	@Override
	public void render() {
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		Gdx.gl.glClearColor(0f, 0f, 0f, 0f);
		
		spriteBatch.begin();
		bf.draw(spriteBatch, "Hello World", Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
		spriteBatch.end();
	}
	
	@Override
	public void dispose() {
           spriteBatch.dispose();
           bf.dispose();
         }

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

	}

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

	}

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

	}

}

     首先在create()函数中初始化一下相应的变量,否则会得到空指针。绘图用SpriteBatch,以及字体类BitmapFont,至于后者,我们很显然可以从名字就看出,它的实现是借助图片来实现字体显示的。

     绘图用SpriteBatch在绘图前一定要调用begin()方法,而在调用后一定要调用end()方法,否则程序会报错。

     一旦ApplicationListener开始运行,render函数就会不停执行。

   

     Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
     Gdx.gl.glClearColor(0f,0f,0f,0f);
     这两句是用来做清屏操作的,第一句是用来清除颜色缓存,并把刷新后的屏幕的颜色置为(0, 0, 0, 0) ,也就是黑色,如果(1,1,1,0)就是白色了。

      Gdx.graphics.getWidth()/2,这就是Gdx提供的一些类来获取系统信息。

      在dispose()函数中不要忘了对变量执行dispose()方法,在libgdx中,很多资源必须手动释放,否则一直占用着内存,很可能就此发生内存溢出的错误,而libgdx中有一个结构Disposable,一般实现了这个接口的类都需要手动回收的。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值