Android 发动机更新屏幕
我有一张用android画布制作的实时壁纸。经过测试,我觉得有必要利用OpenGL的强大功能,因此我尝试使用AndEngine。我想知道如何才能做到以下几点 我有一个填充整个屏幕的背景图像,上面有许多较小的位图(不是动画动作) 到目前为止,我的背景图像是:Android 发动机更新屏幕,android,andengine,Android,Andengine,我有一张用android画布制作的实时壁纸。经过测试,我觉得有必要利用OpenGL的强大功能,因此我尝试使用AndEngine。我想知道如何才能做到以下几点 我有一个填充整个屏幕的背景图像,上面有许多较小的位图(不是动画动作) 到目前为止,我的背景图像是: @Override public void onLoadResources() { mtexture = new Texture(1024, 1024, TextureOptions.BILINEAR); Textur
@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();
}};
-
在AndEngine上执行此操作的适当方式是什么?我是否使用相同的代码并替换openGL调用
我查看了GLEngine
,我是否应该将Runnables发送到GlThread
队列
编辑-我想我找到了答案…一个更新管理员。但是我如何通知处理程序更新(即调用
onUpdate
方法)。如果我做了一个定时处理程序,如果我调用太频繁会发生什么,请求队列是否会堆积起来?首先,不要使用构造函数Scene(int)
,它已被弃用。改用Scene()
正确,您应该使用更新处理程序。
您可以创建一个UpdateHandler
,然后将其注册到场景中:
scene.registerUpdateHandler(mUpdateHandler);
这样,每次场景更新(每帧)时都会执行mUpdateHandler.onUpdate
方法中的代码。你不需要手动调用它。如果要停止,请致电:
scene.unregisterUpdateHandler(mUpdateHandler);
因此,onUpdate
方法始终在UpdateThread中执行,因此您可以确保可以对其中的实体进行任何更改。所以你可以四处走动,你想要的精灵,等等
顺便问一下,为什么背景的宽度是相机的宽度*2?这意味着只显示精灵的左半部分。如果你不打算移动相机,那么右半部分永远不会出现
scene.unregisterUpdateHandler(mUpdateHandler);