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

最佳答案

相机的代码如下

@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));


speed是浮点变量,对于1280x720屏幕分辨率,它的值为4.4651165。如果将其设置为整数,则不会出现闪烁,但是这次设备的子画面速度有所不同。

07-24 09:27