gpt4 book ai didi

使用 SurfaceView 的 Android gameLoop;快速更换相机 'shots' 会导致黑色闪光等

转载 作者:行者123 更新时间:2023-11-30 04:45:53 25 4
gpt4 key购买 nike

我使用 SurfaceView 构建了一个简单的游戏引擎。

我将 RectF 用作“相机”窗口,以表示 SurfaceView Canvas 的缩放像素宽度和高度,并找出屏幕上的内容。

我使用 canvas.translate 移动到相机“指向”的位置。这是绘制循环:

mCamera.UpdateCamera();
scaleWorld(c, mCamera);
c.translate(-mScreen.left, mScreen.top - miHeight
* (1 / mCamera.getScaleLevel()));
drawBehavior.drawGame(c);

无论如何,如果我发射弹丸,游戏会顺利呈现,并且我看不到黑色的视觉闪光,这是我用来冲洗 Canvas 的颜色。

但是,如果我立即更改相机可以看到的内容,可能在 3 个或更多“屏幕”之外,通常会出现黑色闪光,但并非总是如此。有时我会很“幸运”,并且过渡是无缝的。

这些闪光通常出现在我的位图位置,因为我使用一个或两个位图递归地绘制地面和背景。

在我看来,突然的变化是问题所在,所以我试图从根本上破坏 gameLoop 线程以停止一切,然后设置新的 Rect 坐标,然后用另一个线程重新启动,但这不起作用。

我想经过反射(reflection),我只是通过这样做来延迟对系统的“冲击”,而不是治疗它。

在试图通过淡出或其他视觉技巧来掩盖这个可能很糟糕的设计之前,我想知道是否有人对这个问题有更深入的了解,并且可以引导我找到一个更优雅的解决方案。

最佳答案

我猜屏幕在抽签完成之前正在刷新。多线程仍然让我有点迷茫——但这里有一些值得尝试的东西:尝试在游戏循环开始时锁定 Canvas ,并在结束时解锁: http://developer.android.com/reference/android/view/SurfaceHolder.html#lockCanvas ()

关于使用 SurfaceView 的 Android gameLoop;快速更换相机 'shots' 会导致黑色闪光等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com