Flash 使用相机进行闪烁会导致接缝(由于浮点错误?)
我正在使用blitting实现tilemap(在Flash中,但我认为它与语言无关)。我遇到的问题是,当我左右摇动相机时,1像素的接缝开始变得可见,这取决于位置 以下是我如何决定我的布告点: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; } /
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,看看是否有效