У меня есть живые обои, которые я создал с помощью android canvas. После тестирования я счел необходимым использовать возможности OpenGL, поэтому я экспериментирую с AndEngine. Мне интересно, как я могу добиться следующего.
У меня есть фоновое изображение, которое заполняет весь экран, со множеством маленьких растровых изображений, плавающих поверх (не анимированные движения)
Пока у меня есть это для фонового изображения:
@Override
public void onLoadResources()
{
mtexture = new Texture(1024, 1024, TextureOptions.BILINEAR);
TextureRegionFactory.setAssetBasePath("gfx/");
mtextureRegion = TextureRegionFactory.createFromResource(mtexture , this, R.drawable.background1, 0, 0);
this.mEngine.getTextureManager().loadTexture(this.mtexture );
}
@Override
public Scene onLoadScene(){
final Scene scene = new Scene(1);
Sprite background = new Sprite(0, 0, CAMERA_WIDTH*2, CAMERA_HEIGHT, mtextureRegion )
SpriteBackground sb = new SpriteBackground(background);
scene.setBackground(sb);
scene.setBackgroundEnabled(true);
return scene;
}
Это прекрасно работает для фона, но мне нужны движущиеся спрайты.
В своем коде холста я делаю следующее, чтобы обновить положение и физику движущихся объектов и рисовать холст каждые несколько мс
private final Runnable drawScreen = new Runnable() {
public void run() {
drawFrame();
}};
-
void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
//draw
}
} finally {
if (c != null) holder.unlockCanvasAndPost(c);
}
mHandler.removeCallbacks(drawScreen);
mHandler.postDelayed(drawScreen, 10);
}
Каков подходящий способ сделать это на AndEngine? использовать один и тот же код и заменять вызовы openGL?
Я посмотрел на GLEngine
, я должен отправлять Runnables в очередь GlThread
?
РЕДАКТИРОВАТЬ - я думаю, что нашел ответ ... UpdateHandler. Но как я могу сообщить обработчику об обновлении (то есть вызвать метод onUpdate
). Если я создаю синхронизированный обработчик, что произойдет, если я буду звонить слишком часто, будет ли создана очередь запросов?