libgdx游戏引擎教程(六)多游戏界面的实现(二)附源码
转自:http://www.apkbus.com/android-57991-1-1.html 今天是#Testin杯#Mkey libgdx教程的第六讲,在第二讲我就曾经对大家承诺过写一个关于Libgdx内多屏幕显示的内容,可是我脑子一时糊涂竟然忘了这事,这里向大家道歉,从第五到第七讲我们就来八一八libgdx中的多游戏容器的实现。我在我的Libgdx教程中尽量给大家介绍一些实用的功能,
转自:http://www.apkbus.com/android-57991-1-1.html
今天是#Testin杯#Mkey libgdx教程的第六讲,在第二讲我就曾经对大家承诺过写一个关于Libgdx内多屏幕显示的内容,可是我脑子一时糊涂竟然忘了这事,这里向大家道歉,从第五到第七讲我们就来八一八libgdx中的多游戏容器的实现。我在我的Libgdx教程中尽量给大家介绍一些实用的功能,至于那些libgdx API基本的使用方法则不过多侧重,想来大家通过查询API文档也能掌握。这里再提醒一下大家,API文档可以在官网上看到,也可以在下载下来的libgdx包中的docs下的index.html中查看。
- public class MyGame implements Screen {
- SpriteBatch batch;
- BitmapFont bf;
- ParticleEffect particle;
- ParticleEffect tem;
- ParticleEffectPool particlepool;
- ArrayList<ParticleEffect> particlelist;
- Texture tx1;
- Texture tx2;
- Texture tx3;
- LibgdxActivity activity;
- //这里的Button是com.badlogic.gdx.scenes.scene2d.ui.Button,注意区分
- Button button;
- //Button继承自Actor,因此我们也需要一个舞台,stage
- Stage stage;
- public MyGame(LibgdxActivity activity) {
- super();
- this.activity = activity;
- }
- public void resize (int width, int height) {
- // STUB
- }
- public void pause () {
- // STUB
- }
- public void resume () {
- // STUB
- }
- public void dispose () {
- // STUB
- batch.dispose();
- bf.dispose();
- //千万别忘了释放内存
- particle.dispose();
- if(tem!=null)
- tem.dispose();
- particlepool.clear();
- }
- @Override
- public void hide() {
- // TODO Auto-generated method stub
- }
- @Override
- public void render(float arg0) {
- // TODO Auto-generated method stub
- Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
- Gdx.gl.glClearColor(0f,0f,0f,0f);
- stage.act(Gdx.graphics.getDeltaTime());
- stage.draw();
- batch.begin();
- bf.draw(batch, "Testin Mkey libgdx(6)",Gdx.graphics.getWidth()*0.4f, Gdx.graphics.getHeight()/2);
- batch.end();
- if(true){
- if(Gdx.input.isTouched()){
- //当此触摸点与上一触摸点距离大于一定值的时候触发新的粒子系统,由此减小系统负担
- tem=particlepool.obtain();
- tem.setPosition(Gdx.input.getX(),Gdx.graphics.getHeight()-Gdx.input.getY());
- particlelist.add(tem);
- }
- batch.begin();
- for(int i=0;i<particlelist.size();i++){
- particlelist.get(i).draw(batch, Gdx.graphics.getDeltaTime());
- }
- batch.end();
- //清除已经播放完成的粒子系统
- ParticleEffect temparticle;
- for(int i=0;i<particlelist.size();i++){
- temparticle=particlelist.get(i);
- if(temparticle.isComplete()){
- particlelist.remove(i);
- }
- }
- }
- }
- @Override
- public void show() {
- // TODO Auto-generated method stub
- stage=new Stage(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(), true);
- tx2 = new Texture(Gdx.files.internal("button1_480.png"));
- tx1 = new Texture(Gdx.files.internal("button2_480.png"));
- tx3 = new Texture(Gdx.files.internal("button3_480.png"));
- NinePatch n1 = new NinePatch(tx1, 14, 14, 18, 18);
- NinePatch n2 = new NinePatch(tx2, 14, 14, 18, 18);
- NinePatch n3 = new NinePatch(tx3, 14, 14, 18, 18);
- button = new Button( new ButtonStyle(n1, n2, n3, 0f, 0f, 0f, 0f), "Start");
- button.setClickListener(new ClickListener() {
- @Override
- public void click(Actor arg0, float arg1, float arg2) {
- // TODO Auto-generated method stub
- activity.ag.setScreen(activity.progress);
- }
- });
- stage.addActor(button);
- batch=new SpriteBatch();
- bf=new BitmapFont();
- //初始化粒子变量
- particle = new ParticleEffect();
- particle.load(Gdx.files.internal("particle.p"), Gdx.files.internal(""));
- particlepool=new ParticleEffectPool(particle, 5, 10);
- particlelist=new ArrayList<ParticleEffect>();
- //只有加入这条语句,stage中的Button()
- Gdx.input.setInputProcessor(stage);
- }
- }
- public class LibgdxActivity extends AndroidApplication {
- Progress progress;
- MyGame mg;
- ApplicationGame ag;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- progress=new Progress();
- mg=new MyGame(this);
- ag=new ApplicationGame(mg);
- initialize(ag, false);
- }
- }
源码在这里:
edu.nju.wsj.libgdx.rar(3.57 MB, 下载次数: 919)
Testin ID:ilovemkey@gmail.com 总的而言这个平台真的非常好用!我正是用这个平台发现了现在写的这个应用的一些内存管理方面的问题。另外建议能够在测试报告中看到某一台机型在整个执行过程中的cpu和内存占用的变化情况,这样可以更快地锁定问题。感谢Itestin让测试变得轻松了太多太多!
更多推荐
所有评论(0)