Friday 21 September 2012

#1.3 Tutorial (LibGDX & MTX) Test1_AbstractScreen

Hello there!

I assume you downloaded the project files (MtxFramework2, MtxFramework2-android, MtxFramework2-desktop) and imported to eclipse.

We create our screen and extend to MTX framework's "AbstractScreen". It will handle the rest.
All mtx framework codes are documented, so you can read for more features



  • It creates stage for you - getStage()
  • You should set SCREEN_W & SCREEN_H for screen resolution in "AbstractScreen" class, once set and use it everywhere
  • It has state time for animations - getStateTime()
  • It sets input processor for you - Gdx.input.setInputProcessor(stage);
  • You can get seconds counting since its creation - getSecondsTime()
  • You can get formatted time since its creation - getScreenTime()
  • You can set back button active, and override the keyBackPressed() for back button


So less code, so much done:

  • Created the scene
  • Added background texture
  • Added Screen timer and Fps
  • Set the back key and override it

package com.mtx.tests;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.moribitotech.mtx.AbstractScreen;
import com.mtx.testassets.Assets;

public class Test1_AbstractScreen extends AbstractScreen {
 private Label lblFps;
 private Label lblScreenTime;
 
 public Test1_AbstractScreen(Game game, String screenName) {
  super(game, screenName);
 }
 
 @Override
 public void setUpScreenElements() {
  super.setUpScreenElements();
  
  // #1.1 TEST
  // Set background texture
  // #########################################################
  setBackgroundTexture(Assets.imgMtxBg);
   
  // #1.2 TEST
  // Set back button
  // (Override keyBackPressed to do some action see very below)
  // #########################################################
  setBackButtonActive(true);
  
  // #1.3 TEST
  // Screen time / Fps
  // Update by overriding render
  // #########################################################
  lblScreenTime = new Label("", Assets.getSkin());
  lblFps = new Label("", Assets.getSkin());
  lblScreenTime.setPosition(getStage().getWidth() - 80, getStage().getHeight() - 40);
  lblFps.setPosition(getStage().getWidth() - 80, getStage().getHeight() - 60);
  getStage().addActor(lblScreenTime);
  getStage().addActor(lblFps);
 }
 
 @Override
 public void keyBackPressed() {
  super.keyBackPressed();
  getGame().setScreen(new Test0_AllTestsScreen(getGame(), ""));
 }
 
 @Override
 public void render(float delta) {
  super.render(delta);
  lblScreenTime.setText(getScreenTime());
  lblFps.setText("Fps: " + Gdx.graphics.getFramesPerSecond());
 }
}
 

8 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Merhaba,
    Ben sadece basit uygulamalar yapmaya çalıştım şimdiye kadar, buraya bakıyım bi dedim bütün proje dosyalarını indirdim VM'de ve masaüstünde çalıştırdım ama ne nerden geliyor anlamış değilim. Bu tutorial'de yeni bir projemi açacağız yoksa senin verdiklerin üzerinden ne yapmaya çalışıyor onumu anlayacağız? Benim klasik layouta buton vb araçları eklemekten çok farklı bu, mesela oyunmenusunde o butonları kodlamı yerleştiriyoruz tamamen? İngilizcem iyi olmadığından traslatede olduğu kadar anlamaya çalıştım ama kavrayamadım zamanın varsa sistem nasıl işliyor anlatır mısın?

    ReplyDelete
    Replies
    1. Zaten Android SDK kullanmiyoruz burda, LibGDX oyun motorunun kutuphanelerini kullaniyoruz. (Klasik android layout, buton vsvs burda yok). Surukle birak ile birsey yok burda, butonlar, karakterler ve menuler hep elle kodlanmak zorunda. Zaten tutorial basindada belirttim, belli basli bilgin olmasi lazim LibGDX oyun motoru ile ilgigi, LibGDX ana sitesinden, baslangic tutoriallarina bakabilirsin, sistemi anladiktan sonra MTXi kullanip, herseyi hemen yapiyorsun.

      Delete
    2. LibGDX: Ilere derecede Java vede Nesne tabanli programlama bilmen lazim. Oyun yapisindan cok iyi anlaman lazim, kisacasi her seyi nerdeyse manual yapiyorsun. LibGDX arti yonleri, inanilmaz yuksek fpsi her cihazda en saglam oyunlar bile nerdeyse +50 fps ile calisiyor. Ayrica MVC cok guzel, bir kere yapiyi anladinmi corap sokugu gibi geliyor gerisi, ayrica tamemen BEDAVA. AndEngine ile baslayan herkes LibGDXe dondu cunku hizla gelisiyor. HTML5, iOS, Konsol vsvs her turlu destek var LibGDXde. by Moribito :D

      Araştırırken bunu buldum ama gel gelelim bu oyun mantığını bilmiyorum. Şimdiye kadar hep oyun oynadım bundan sonrada bu mantığı kavramak istiyorum ve de ufak birşeyler yapmak istiyorum. Photoshopla uğraşmayı seviyorum yani grafiklere elim yatkın bununla kodu birleştirmek istiyorum. Nesne yönelimli programlamayı c#'ı 3 kere alarak baya anladım:). Bu oyun mantığını anlamak için ne yapmamı önerirsin? ligGDX yazıp aratınca google nerde libGDX orda sen:)ve baktığım zaman verdiğin bilgiler bu işi iyi bildiğini gösteriyor bu yüzden sen sistemden biraz bahsetsen çok iyi olur. Türkiye'de fazla uğraşan yok bunla galiba. AdEngine ile alakalı Türkçe kaynaklar var sistemi anlamak için o dersleri yapsam mı acaba? Son olarak Sen Kimsin? Bilirkişi misin? Bu uygulamayıdamı libGDX'le yaptın.

      Delete
    3. Sen Kimsin? Bilirkişi misin?, o uygulama oylesine aylar once yapmistim, android SDK ve Google API ile yapildi, LibGDX ile alakasi yok. Maalesef LibGDX'le ilgili sifirdan anlatan bir kaynak yok.

      LibGDX yaraticisi Marionun kitabi var, http://www.amazon.com/Beginning-Android-Games-Mario-Zechner/dp/1430230428. Burda oyun yapmanin temelleri anlatiliyor vede LibGDX'e benzer bir yapisi var, herkes bu kitapla baslar bende bu kitapla basladim.

      Delete