AndEngine — это бесплатный движок для 2d игр под Android, один из наиболее популярных.
Взять можно здесь.
Теперь создадим новый Android Project.
Далее создадим в корне новый каталог с именем lib и скопируем в этот каталог, заранее скаченный файл andengine.jar.
Затем, нажатием правой кнопки мыши на andengine.jar вызываем меню и выбираем пункт «Build Path» -> «Add To Build Path», тем самым добавляя библиотеку в проект. С настройками пока закончим и перейдем непосредственно к коду. Откроем наш главный Activity.
| Java | 1
2
3
4
5
6
7
8
9
10
11
| package com.andengine.hello;
import android.app.Activity;
import android.os.Bundle;
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
} |
|
Удалим функцию OnCreate, а класс Activity заменим на BaseGameActivity из библиотеки AndEngine. BaseGameActivity — это основной класс графического приложения, наследуемый от Activity. Теперь нам нужно переопределить следующие 4 функции этого класса.
Engine onLoadEngine() — в этой функции будем создавать объект Engine, это и есть основной класс движка.
void onLoadResources() — в этой функции мы загружаем необходимые нам ресурсы, такие как шрифты, текстуры и т.п.
Scene onLoadScene()— здесь мы создаем объект Scene, отвечающий за отображение графических объектов, таких как спрайты, линии, прямоугольники и т.п.
void onLoadComplete() — эта функция выполняется самой последней, в ней можно выполнить какие то обобщающие действия.
После всех изменений, исходный код класса Main будет выглядеть так:
| Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| package com.andengine.hello;
import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.ui.activity.BaseGameActivity;
public class Main extends BaseGameActivity {
@Override
public Engine onLoadEngine() {
// TODO Auto-generated method stub
return null;
}
@Override
public void onLoadResources() {
// TODO Auto-generated method stub
}
@Override
public Scene onLoadScene() {
// TODO Auto-generated method stub
return null;
}
@Override
public void onLoadComplete() {
// TODO Auto-generated method stub
}
} |
|
Для начала нам нужно определить разрешение экрана и создать камеру
| Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| // размеры окна отображения
public static int CAMERA_WIDTH ;
public static int CAMERA_HEIGHT ;
// класс Camera определяет текущую область видимости на экране
private Camera mCamera;
@Override
public Engine onLoadEngine() {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.d("Resolution", "resolution: "+metrics.widthPixels+" x "+ metrics.heightPixels);
CAMERA_WIDTH=metrics.widthPixels;//Получаем ширину экрана устройства
CAMERA_HEIGHT=metrics.heightPixels;//Получаем высоту экрана устройства
this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new Engine(new EngineOptions(true,
ScreenOrientation.LANDSCAPE,
new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),
this.mCamera));
} |
|
Теперь изменим функцию Scene onLoadScene() для того чтобы изменить цвет фона на синий:
| Java | 1
2
3
4
5
6
7
8
9
| @Override
public Scene onLoadScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());
final Scene scene = new Scene();
scene.setBackground(new ColorBackground(0, 0, 0.8784f));
return scene;
} |
|
|