Дрожание рисунка Java - PullRequest
0 голосов
/ 15 мая 2019

У меня есть поток, в котором я получаю пакеты со значением, которое идет от 45,0 до 0,0, оно постоянно уменьшается (это таймер)

Затем я рисую прямоугольник (длина основана на этом значении) И длина прямоугольникадрожит (кажется, что точно каждую секунду)

Это на моем телефоне, но я попробую сделать GIF сейчас. По сути, он «скачет» к предыдущему значению, которое было как полсекунды раньше, а затем возвращаетсяк норме

пакеты отправляются с задержкой 15 мс между ними, я пытался увеличить / уменьшить задержку, даже если я отправляю их с задержкой почти 500 мс, она все еще дрожит каждую секунду

// its this easy, but i dont get where the jittering comes from
if (UdpClientThread.bomb != null) {
    float curExplode = UdpClientThread.bomb.explode;
    canvas.drawRect(0, 0, 24 * curExplode, 200, paintexplode);
}
postInvalidate();

вот как я получаю curExplode

...
packet = new DatagramPacket(msg, msg.length);
socket.receive(packet);
String line = new String(packet.getData(), 0, packet.getLength());
if (line.length() > 0 && line.charAt(0) == 'b') {
String[] bomb_data = line.split(Pattern.quote("|"));
if (bomb_data.length == 4) {
    int cur_sq = Integer.parseInt(bomb_data[1]);
    if (cur_sq > prev_sq) {
        bomb = new Bomb(Float.parseFloat(bomb_data[2]), Float.parseFloat(bomb_data[3]));
        prev_sq = cur_sq;
    }
}
...

Я хочу, чтобы он был плавным: (

РЕДАКТИРОВАТЬ:

видео, демонстрирующее проблему (стало еще хуже из-зазапись экрана; игнорируйте цвета, это мой рендерер)

https://youtu.be/tvOYI7Dgu74

EDIT2:

я добавил порядковый номер в пакеты UDP, чтобы убедиться, что это не старое значениеобращается

эта проблема все еще существует

...