gpt4 book ai didi

android - AndEngine更新画面

转载 作者:搜寻专家 更新时间:2023-11-01 09:10:51 25 4
gpt4 key购买 nike

我有一个使用 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;
}

这对背景来说效果很好,但我需要移动 Sprite 。

在我的 Canvas 代码中,我执行以下操作来更新移动对象的位置和物理特性,并每隔几毫秒绘制一次 Canvas

        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,是否应该将 Runnable 发送到 GlThread 队列?

编辑 - 我想我找到了答案......一个 UpdateHandler。但是我如何通知处理程序更新(即调用 onUpdate 方法)。如果我创建一个定时处理程序,如果我调用得太频繁会发生什么情况,是否会建立请求队列?

最佳答案

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

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

scene.registerUpdateHandler(mUpdateHandler);

这样,mUpdateHandler.onUpdate 方法中的代码会在每次场景更新(每一帧)时执行。您不要手动调用它。如果你想停止它,调用:

scene.unregisterUpdateHandler(mUpdateHandler);

因此,onUpdate 方法总是在 UpdateThread 中执行,因此您可以确定可以对那里的实体进行任何更改。所以你可以四处移动和你想要的 Sprite 等等......

对了,为什么背景的宽度是CAMERA_WIDTH*2?这意味着只显示了 Sprite 的左半部分。如果您不打算移动相机,那么右半边永远不会显示。

关于android - AndEngine更新画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8455213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com