我在DrawHanlder的Update中加了个打印,发现Update是每15ms被调用一次,很精确。
我又在R2LDanmaku,java的getLeft中加了打印,发现它的调用时间非常不精确。有时候40ms才被调用一次。
我想getLeft没有及时更新,才是导致弹幕抖动闪烁额的根本原因。
从理论上,如果Update能够保证15ms调用一次,那么getLeft应该15ms调用一次,才能保证移动的平滑
见以下log
log中Time 16ms是在Update中打印的,16ms表示距离前一次打印的相对时间。
Time 8934, 201.963989, 41db17c8是在getLeft中打印的
8934是currentTime, 201是算出来的Left位置,41db17c8是某一条弹幕的HashCode
从log中可以看到,Update的调用时刻很准。但是常常几次update以后才调用一次getLeft。
05-04 17:43:30.770: I/DBG(3624): Time 8886, 207.755981, 41db17c8
05-04 17:43:30.770: I/DBG(3624): Time 16
05-04 17:43:30.790: I/DBG(3624): Time 16
05-04 17:43:30.790: I/DBG(3624): Time 8918, 203.894653, 41db17c8
05-04 17:43:30.800: I/DBG(3624): Time 16
05-04 17:43:30.810: I/DBG(3624): Time 8934, 201.963989, 41db17c8
05-04 17:43:30.820: I/DBG(3624): Time 18
05-04 17:43:30.840: I/DBG(3624): Time 16
05-04 17:43:30.850: I/DBG(3624): Time 8968, 197.861328, 41db17c8
05-04 17:43:30.860: I/DBG(3624): Time 18
05-04 17:43:30.870: I/DBG(3624): Time 16
05-04 17:43:30.880: I/DBG(3624): Time 9002, 193.758667, 41db17c8
05-04 17:43:30.890: I/DBG(3624): Time 16
05-04 17:43:30.900: I/DBG(3624): Time 16
05-04 17:43:30.920: I/DBG(3624): Time 17
05-04 17:43:30.920: I/DBG(3624): Time 9051, 187.845947, 41db17c8
05-04 17:43:30.940: I/DBG(3624): Time 15
05-04 17:43:30.950: I/DBG(3624): Time 9066, 186.036011, 41db17c8
05-04 17:43:30.950: I/DBG(3624): Time 19
05-04 17:43:30.970: I/DBG(3624): Time 15
05-04 17:43:30.990: I/DBG(3624): Time 18
05-04 17:43:30.990: I/DBG(3624): Time 9118, 179.761353, 41db17c8
05-04 17:43:31.000: I/DBG(3624): Time 15
05-04 17:43:31.020: I/DBG(3624): Time 16
05-04 17:43:31.040: I/DBG(3624): Time 16
05-04 17:43:31.040: I/DBG(3624): Time 9165, 174.089966, 41db17c8
05-04 17:43:31.060: I/DBG(3624): Time 19
05-04 17:43:31.060: I/DBG(3624): Time 9184, 171.797363, 41db17c8
05-04 17:43:31.080: I/DBG(3624): Time 19
05-04 17:43:31.090: I/DBG(3624): Time 19
05-04 17:43:31.100: I/DBG(3624): Time 9222, 167.212036, 41db17c8
05-04 17:43:31.110: I/DBG(3624): Time 16
05-04 17:43:31.120: I/DBG(3624): Time 9238, 165.281372, 41db17c8
05-04 17:43:31.130: I/DBG(3624): Time 20
05-04 17:43:31.140: I/DBG(3624): Time 17
05-04 17:43:31.160: I/DBG(3624): Time 9275, 160.816650, 41db17c8
05-04 17:43:31.160: I/DBG(3624): Time 16
05-04 17:43:31.180: I/DBG(3624): Time 16
05-04 17:43:31.190: I/DBG(3624): Time 9307, 156.955322, 41db17c8
05-04 17:43:31.190: I/DBG(3624): Time 15
05-04 17:43:31.210: I/DBG(3624): Time 16
05-04 17:43:31.220: I/DBG(3624): Time 9338, 153.214600, 41db17c8
05-04 17:43:31.220: I/DBG(3624): Time 16
05-04 17:43:31.240: I/DBG(3624): Time 16
05-04 17:43:31.250: I/DBG(3624): Time 9370, 149.353271, 41db17c8
05-04 17:43:31.260: I/DBG(3624): Time 16
05-04 17:43:31.270: I/DBG(3624): Time 16