Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 使用相机进行闪烁会导致接缝(由于浮点错误?)_Flash_Floating Point_2d_Rounding_Blit - Fatal编程技术网

Flash 使用相机进行闪烁会导致接缝(由于浮点错误?)

Flash 使用相机进行闪烁会导致接缝(由于浮点错误?),flash,floating-point,2d,rounding,blit,Flash,Floating Point,2d,Rounding,Blit,我正在使用blitting实现tilemap(在Flash中,但我认为它与语言无关)。我遇到的问题是,当我左右摇动相机时,1像素的接缝开始变得可见,这取决于位置 以下是我如何决定我的布告点: var destination : Point = _position.toPoint(); if (camera != null) { destination.x -= camera.position.x; destination.y -= camera.position.y; } /

我正在使用blitting实现tilemap(在Flash中,但我认为它与语言无关)。我遇到的问题是,当我左右摇动相机时,1像素的接缝开始变得可见,这取决于位置

以下是我如何决定我的布告点:

var destination : Point = _position.toPoint();

if (camera != null)
{
    destination.x -= camera.position.x;
    destination.y -= camera.position.y;
}

// the actual blit, not really relevant:
canvas.bitmapData.copyPixels(_bitmapData, _sourceRectangle, destination, null, null, true);
当我滚动我的相机时,我可以看到这个位置变得非常不稳定。这里有一些痕迹:

     pre-camera: 443 534
     post-camera: 396.3333333333333 294
     pre-camera: 476 534
     post-camera: 429.3333333333333 294
     pre-camera: 509 534
     post-camera: 462.3333333333333 294
接缝仅在.3333拍摄后位置出现

这些浮点问题是导致接缝的原因,这似乎合乎逻辑吗?由于无论如何都不能将目标值放大到半个像素,所以只对目标值进行落地/四舍五入是否安全


谢谢

这完全与你如何进行blitting有关。我包括了copyPixels()命令,但在无可见接缝和接缝之间唯一的变化是destinationPoint,我已经展示了如何计算。你知道是什么引起的吗?感谢您迄今为止的帮助。我注意到,当我有另一个flash实例运行在我的后面(比如youtube视频)或者仅仅是另一个窗口时,它会产生接缝。由于数字是双精度的,所以这是一个浮点错误的几率似乎很低(特别是因为您只进行了减法运算)。如果不是,你的位置是否可能不一致?在绘制场景时,您可以尝试将摄影机的位置四舍五入为int,看看是否有效