Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 发动机更新屏幕_Android_Andengine - Fatal编程技术网

Android 发动机更新屏幕

Android 发动机更新屏幕,android,andengine,Android,Andengine,我有一张用android画布制作的实时壁纸。经过测试,我觉得有必要利用OpenGL的强大功能,因此我尝试使用AndEngine。我想知道如何才能做到以下几点 我有一个填充整个屏幕的背景图像,上面有许多较小的位图(不是动画动作) 到目前为止,我的背景图像是: @Override public void onLoadResources() { mtexture = new Texture(1024, 1024, TextureOptions.BILINEAR); Textur

我有一张用android画布制作的实时壁纸。经过测试,我觉得有必要利用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();
        }};
-

在AndEngine上执行此操作的适当方式是什么?我是否使用相同的代码并替换openGL调用

我查看了
GLEngine
,我是否应该将Runnables发送到
GlThread
队列


编辑-我想我找到了答案…一个更新管理员。但是我如何通知处理程序更新(即调用
onUpdate
方法)。如果我做了一个定时处理程序,如果我调用太频繁会发生什么,请求队列是否会堆积起来?

首先,不要使用构造函数
Scene(int)
,它已被弃用。改用
Scene()

正确,您应该使用更新处理程序。 您可以创建一个
UpdateHandler
,然后将其注册到场景中:

scene.registerUpdateHandler(mUpdateHandler);
这样,每次场景更新(每帧)时都会执行
mUpdateHandler.onUpdate
方法中的代码。你不需要手动调用它。如果要停止,请致电:

scene.unregisterUpdateHandler(mUpdateHandler);
因此,
onUpdate
方法始终在UpdateThread中执行,因此您可以确保可以对其中的实体进行任何更改。所以你可以四处走动,你想要的精灵,等等

顺便问一下,为什么背景的宽度是相机的宽度*2?这意味着只显示精灵的左半部分。如果你不打算移动相机,那么右半部分永远不会出现

scene.unregisterUpdateHandler(mUpdateHandler);