Scene2D: Pengantar

Scene2D adalah kumpulan kelas yang memudahkan manipulasi objek 2D pada LibGDX.  Scene2D berisi class Actor yang digunakan untuk menyimpan objek yang akan dimanipulasi dan ditampilkan, class Stage tempat menampilkan Actor, dan class Action berisi aksi yang dilakukan oleh Actor. Selain itu ada class untuk menangani drag-drop, user interface dan lain-lain.

Pada contoh scene2D berikut, ditampilkan kotak merah  dibagian kiri bawah.

Buat kelas Kotak yang merupakan turunan dari Actor.

public class Kotak extends Actor {
    private Pixmap pm;
    private Sprite sp;
    private Texture img;

    public Kotak  () {
        //constrcutor, siapkan sprite objek
        //sama dengan contoh sebelumnya

        //siapkan gambar kotak berwarna merah dengan line hitam
        pm  = new Pixmap(100,100,Pixmap.Format.RGBA8888);
        pm.setColor(Color.RED);
        pm.fill();
        pm.setColor(Color.BLACK);
        pm.drawRectangle(0,0, pm.getWidth(), pm.getHeight());

        //buat texture dari pixmap, kemudian buat sprite
        img = new Texture(pm);
        pm.dispose();
        sp = new Sprite(img);
    }

    @Override
    public void draw (Batch batch, float parentAlpha) {
        //color, rotasi, scale harus ditambahkan
        //agar action berfungsi
        Color color = getColor();
        batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
        batch.draw(sp, getX(), getY(), getOriginX(), getOriginY(),getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
    }

}

Selanjutnya di class utama, tambahkan kode berikut. Penjelasan ada di dalam comment.


import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.utils.viewport.ExtendViewport;

public class CobaScene2D extends ApplicationAdapter {

    private Stage stg;

    //resoulsi nexus5 1794 x 885
    private float wWorld = 1794;
    private float hWorld = 885;

    @Override
	public void create () {
        /*
           buat stage dengan tipe ExtendViewPort  agar aspek rasio tetap di berbagai resolusi
           Selain viewport ini, ada viewport lain yaitu: FitViewPort, StrechViewport,
           FillViewport, ScreenViewport, ExtendViewport

           Silahkan coba satu-satu viewport tersebut, ubah ukuran window
           untuk melihat efeknya
        */
        stg = new Stage(new ExtendViewport(wWorld, hWorld));

        //siapkan Actor
        Kotak k = new Kotak();
        k.setWidth(200f);
        k.setHeight(200f);

        //koordinat 0,0 ada di kiri bawah!
        k.setX(0);
        k.setY(0);
        //tambah ke stage
        stg.addActor(k);

        //terima input dari user (nanti)
        Gdx.input.setInputProcessor(stg);
	}

    @Override
	public void render () {
        //r,g,b,alpha: warna putih
        Gdx.gl.glClearColor(1, 1, 1, 0);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        float delta = Gdx.graphics.getDeltaTime();
        //aksi aktor (kalau ada)
        stg.act(delta);
        //draw isi aktor
        stg.draw();
	}

    @Override
    public void dispose() {
        stg.dispose();
    }

    @Override
    public void resize(int width, int height) {
        //set ukuran
        //paramter ke-3 adalah keep AspectRatio
        stg.getViewport().update(width, height, true);
    }

}

Selanjutnya kita akan menambahkan aksi pada aktor seperti bergerak, berotasi, menghilang (fade) dan lain sebagainya di tutorial berikutnya: Scene2D: Action

0 comments on “Scene2D: Pengantar

3 Pings/Trackbacks for "Scene2D: Pengantar"

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.