精灵在Andengine闪烁

时间:2015-08-17 14:17:15

标签: java android andengine

我想以恒定的慢速从左到右移动一些精灵。我第一次尝试RatioResolutionPolicy,但我看到精灵闪烁了很多。然后我将resolutionpolicy更改为FixedResolutionPolicy,将精灵纹理定义为位图,缩放它们并通过这些纹理制作精灵(更详细信息:click here)。这比第一种方法更好但不完全好。我使用setx()来移动精灵。当我为每个帧更改x位置例如2 pixels时,没有问题。但对于具有不同分辨率的不同设备,我必须将2乘以一个比率。在这种情况下,精灵再次闪烁,不多,但它对我来说很烦人。

3 个答案:

答案 0 :(得分:0)

相机代码在

之下
@Override
public EngineOptions onCreateEngineOptions() {

    WindowManager w = getWindowManager();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
        Point size = new Point();
        w.getDefaultDisplay().getSize(size);
        V.CAMERA_WIDTH = size.x;
        V.CAMERA_HEIGHT = size.y;
    } else {
        Display d = w.getDefaultDisplay();
        V.CAMERA_WIDTH = d.getWidth();
        V.CAMERA_HEIGHT = d.getHeight();
    }

    if (V.CAMERA_HEIGHT/V.CAMERA_WIDTH>480f/860f){
        V.CAMERA_HEIGHT=V.CAMERA_WIDTH*480f/860f;
    }

    else {
        V.CAMERA_WIDTH=V.CAMERA_HEIGHT*860f/480f;
    }

    V.ratio=V.CAMERA_HEIGHT/480f;

    this.mCamera = new Camera(0, 0, V.CAMERA_WIDTH, V.CAMERA_HEIGHT);
    final EngineOptions engineOptions = new EngineOptions(true,
            ScreenOrientation.LANDSCAPE_FIXED, new FixedResolutionPolicy((int)V.CAMERA_WIDTH, (int)V.CAMERA_HEIGHT),
            this.mCamera);

    return engineOptions;
}

用于移动精灵:

this.wallPosX -= this.speed;
this.setX(Math.round(this.wallPosX));

速度是浮点变量,1280x720屏幕分辨率得到4.4651165。如果我将它设置为整数而不是没有闪烁,但这次精灵速度因设备而异。

答案 1 :(得分:0)

Android手机的屏幕尺寸和屏幕比例太多了。

使用jgibbs创建的裁剪解决方案策略。请遵循Martin Varga的教程,了解它的工作原理以及如何实现它。 它创造奇迹。

Original from jgibbs

我建议Martin's Tutorial

您不应该担心微观管理实体的位置坐标,以适应每种可能的屏幕尺寸。 我不确定这会解决闪烁问题,这可能是与您的相机无关的其他一些问题

答案 2 :(得分:0)

我注意到这不是关于Andengine,而是关于opengl。这个问题的解决方案是这个很棒的工具: https://github.com/gemserk/imageprocessing