2015-08-17 4 views
1

Я хочу переместить некоторые спрайты слева направо с постоянной медленной скоростью. Я сначала попробовал RatioResolutionPolicy, но видел, что спрайты мерцали много. Затем я изменил resolutionpolicy на FixedResolutionPolicy, определил текстуры спрайтов как растровые изображения, масштабировал их и делал спрайты этими текстурами (более подробно: click here). Это лучше, чем первый метод, но не совсем хорошо. Я использую setx() для перемещения спрайтов. Когда я изменяю x positon, например, на 2 pixels для каждого кадра нет проблем. Но для разных устройств, которые имеют разные разрешения, я должен умножить 2 на коэффициент. В этом случае спрайты снова мерцают, не так много, но это раздражает меня.Справки мерцают в Andengine

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

скорость точки varibale плавающей и он получает 4,4651165 для разрешения экрана 1280x720. Если я задаю его как целое число, чем нет мерцания, но на этот раз скорость спрайта отличается от устройства к устройству.

+0

Ну, почему бы вам просто не установить одно разрешение для всех устройств, как предполагается, в andEngine? Установите его как 800x480 –

+0

Я думаю, вы говорите, что хотите выбрать RatioResolutionPolicy. Но, как я уже говорил, спрайты с медленной скоростью мерцают на этом. –

+0

да, но попробуйте разные разрешения, такие как 800x480, а не 860x480. Возможно, проблема с плохим разрешением –

0

Слишком много размеров экрана и соотношение сторон экрана для телефонов Android.

Используйте политику разрешенных разрешений, созданную jgibbs. Следуйте инструкциям Мартина Варги, чтобы получить представление о том, как это работает и как его реализовать. Он творит чудеса.

Original from jgibbs

Я рекомендую Martin's Tutorial

Вы не должны быть обеспокоены микро хозяйствующих субъектов позиционные координаты, чтобы удовлетворить каждый и любой возможный размер экрана. Я не уверен, что это исправит мерцание, хотя это может быть и другая проблема, не связанная с вашей камерой.

+0

Спасибо за ваш интерес. Я решил эту проблему с помощью этого инструмента: https://github.com/gemserk/imageprocessing –

+0

Спасибо, это может решить некоторые проблемы в будущем для меня. Вы должны отправить ответ и пометить его как правильный ответ. Это может помочь большему количеству людей и дать вам больше очков при переполнении стека. –

Смежные вопросы