Построение простой сцены

Изображение
В примере буду стараться придерживаться принципа MVC. По крайней мере постараюсь использовать модель и вид. В первой части на сцену будет добавлено некоторое фоновое изображение, и несколько окружностей

Первое — запустим мастер проекта

Скрин

  • Name: Aquarium
  • Package: kz.dsdk.aquarium
  • Game class: starter
  • Destination: <Расположение проекта>
  • Android SDK: <Расположение SDK Android>

Далее импортируем проект в Android Studio

Скрин

  • В приветсвенном окне выбрать пункт Import project
  • Выбрать файл build.gradle в каталоге указанном в Destination на предыдущем шаге

Добавляем в каталог assets два изображения
Фон:

Скрин

Окружность:

Скрин

Реализуем возможность запуска в режиме рабочего стола. Для этого настроим конфигурацию запуска в выпадающем списке вариантов запуска выбрать Edit Configuration

Скрин

Скрин

В верхнем левом углу нажав на Плюс выбрать Application.

  • Name: Desktop
  • Main class: DesktopLauncher (можно выбрать в диалоге)
  • Working directory: Каталог ресурсов проекта. (можно выбрать в диалоге)
  • Use classpath of module: desktop

Подготовка завершена. Теперь можно начинать размещение изображений

В наш пакет добавим еще три: models, controllers и views.

В пакет models добавим классы Object — отображаемые объекты и World — создаваемый мир.

Object.java
package kz.dsdk.aquarium.models;
import com.badlogic.gdx.math.Vector3;
/**
* Created by ytzh on 1/18/16.
*/
public class Object {
Vector3 position;
Vector3 velosity;
public Object(Vector3 position, Vector3 velosity){
this.position = position;
this.velosity = velosity;
}
public Vector3 getPosition() {
return position;
}
}

Colored with dumpz.org

World.java
package kz.dsdk.aquarium.models;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.Array;
/**
* Created by ytzh on 1/18/16.
*/
public class World {
private Array<Object> objects;
Texture bgt;
Texture objt;
private int width, height;
public World(int width, int height) {
this.width = width;
this.height = height;
objects = new Array<Object>();
this.bgt = new Texture(Gdx.files.internal(«sea.jpg»));
this.objt = new Texture(Gdx.files.internal(«ball.png»));
for(int i = 0; i<60;i++){
objects.add(new Object(new Vector3(MathUtils.random(0,this.widthobjt.getWidth()),MathUtils.random(0,this.heightobjt.getHeight()),0), new Vector3(0,0,0)));
}
}
public void render(SpriteBatch sb){
sb.draw(bgt,0,0);
for(Object obj:objects){
sb.draw(objt,obj.getPosition().x,obj.getPosition().y);
}
}
public void dispose(){
bgt.dispose();
objt.dispose();
}
}

Colored with dumpz.org

Тек же внесем изменения в стартовый класс

starter.java
package kz.dsdk.aquarium;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import kz.dsdk.aquarium.models.World;
public class starter extends ApplicationAdapter {
World world;
SpriteBatch batch;
@Override
public void create () {
batch = new SpriteBatch();
world = new World(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
world.render(batch);
batch.end();
}
}

Colored with dumpz.org

Класс Object представляет собой объект нашего мира. Хранит только свои координаты и скорость движения.
Класс World хранит массив всех используемых объектов. При заполнении массива координаты объектов берутся случайным образом

starter.java — стартовый класс, который предосавляет SpriteBatch для выводимых объектов нашего мира.

Метки: . Закладка Постоянная ссылка.