Java绘图抖动

时间:2019-05-15 16:09:08

标签: java canvas draw

我有一个线程,我收到的数据包的值从45.0到0.0,并且一直在减少(这是一个计时器)

然后我绘制一个矩形(基于此值的长度) 矩形的长度抖动(感觉就像每秒一样)

它在我的手机上,但我现在尝试制作一个gif 基本上,它会“跳”到之前的半秒前的值,然后恢复正常

数据包之间的发送延迟为15ms,即使我发送了近500ms的延迟,我也尝试增加/减少延迟

// 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数据包中,以验证是否提取了旧的值

此问题仍然存在

0 个答案:

没有答案