当前位置:操作系统 > 安卓/Android >>

android游戏开发框架libgdx的使用(四)--舞台和演员

我们先看几个游戏截图再来理解何为舞台。

12942M3Q423F-45025

请仔细观察图片中的元素,有些东西是不能动,有些可以动,有些有特效,有些没有。有些是按钮,有些是图片,但是其实它们都可以统一称为演员(Actor)。

而整个游戏界面就是我们的舞台。

12942M3Q423F-45025 - 副本

再看一个射击类游戏

f2316c3c29ce2660f93dce72a0944453

而其中的演员是

f2316c3c29ce2660f93dce72a0944453

演员是游戏设计中常用的一个对象,它接受舞台的统一管理,拥有一些公共的事件,比如触摸,点击,但是同时还有自身的响应和属性。

而舞台就是容纳演员的场所。它统一管理所有演员,接受输入,同时提供一个方便的框架操作演员的时间变化。

我们来看一下Stage类:


protected final Group root; 

protected final SpriteBatch batch;  

protected Camera camera;

它拥有一个Group,一个SpriteBatch,还有一个相机。

SpriteBatch我们在前几篇说过,这里就不再重复了。

Group是一个类,用于容纳和控制演员。但是这里要注意Group本身其实也是继承自Actor。

相机我们这里跳过,以后再说,可以暂时理解成一个控制观察视角和指标转化的工具。

当我们拥有一个演员后就可以调用addActor方法加入舞台。

舞台可以获取输入,但是需要设置。


Gdx.input.setInputProcessor(stage);

下面来个列子,控制一个人物前进。

actor1

控制人物的按钮:

narrow

将所需的图片放到assert中

所需资源

新建三个类:

FirstGame,实现接口ApplicationListener

FirstActor,继承Actor

NarrowButton,继承Actor

先看一下FirstGame

声明一个Stage,然后实例化FirstActor和NarrowButton,将二者加入舞台中,最后设置输入响应为Stage。


package com.cnblogs.htynkn.listener; 

 

import java.util.Date;  

import java.util.Random; 

 

import javax.microedition.khronos.opengles.GL; 

 

import android.util.Log; 

 

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.scenes.scene2d.Stage;  

import com.cnblogs.htynkn.domain.FirstActor;  

import com.cnblogs.htynkn.domain.NarrowButton; 

 

public class FirstGame implements ApplicationListener { 

 

    private Stage stage;  

    private FirstActor firstActor;  

    private NarrowButton button; 

 

    @Override

    public void create() {  

        stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(),  

                true);  

        firstActor = new FirstActor("renwu");  

        button = new NarrowButton("narrow");  

        stage.addActor(firstActor);  

        stage.addActor(button);  

        Gdx.input.setInputProcessor(stage);  

    } 

 

    @Override

    public void dispose() {  

        stage.dispose();  

    } 

 

    @Override

    public void pause() {  

        // TODO Auto-generated method stub 

 

    } 

 

    @Override

    public void render() {  

        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);  

        stage.act(Gdx.graphics.getDeltaTime());  

        stage.draw();  

    } 

 

    @Override

    public void resize(int width, int height) {  

        // TODO Auto-generated method stub 

 

  &nbs

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,