Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Google chrome SDL中的平滑滚动_Google Chrome_2d_Sdl_Sdl 2 - Fatal编程技术网

Google chrome SDL中的平滑滚动

Google chrome SDL中的平滑滚动,google-chrome,2d,sdl,sdl-2,Google Chrome,2d,Sdl,Sdl 2,我的用例是需要使用SDL构建大型表。我正在寻找像浏览器一样的平滑滚动。有人知道吗?如何在SDL中实现平滑滚动?。我尝试了SDL_鼠标滚轮事件。但是它看起来并不平滑。如果目标设备具有“模拟y”输入法,如触摸屏或触摸板,您将通过使用该输入法找到最平滑的主观滚动体验。也许SDL\u TouchFingerEvent或SDL\u MultiGestureEvent会满足您的需要 如果你只需要使用一个传统的凹口滚轮,你就需要像@keltar建议的那样进行插值 实现这一点最简单的方法是随时间线性变化,比如

我的用例是需要使用SDL构建大型表。我正在寻找像浏览器一样的平滑滚动。有人知道吗?如何在SDL中实现平滑滚动?。我尝试了SDL_鼠标滚轮事件。但是它看起来并不平滑。

如果目标设备具有“模拟y”输入法,如触摸屏或触摸板,您将通过使用该输入法找到最平滑的主观滚动体验。也许
SDL\u TouchFingerEvent
SDL\u MultiGestureEvent
会满足您的需要

如果你只需要使用一个传统的凹口滚轮,你就需要像@keltar建议的那样进行插值

实现这一点最简单的方法是随时间线性变化,比如

收到鼠标滚轮上的
/*事件*/
if(event.type==SDL\u鼠标滚轮)
{
targetScrollPosition+=event.wheel.y*我的滚动灵敏度;
}
/*每一帧,动画滚动*/
如果(VisibleCrollPositiontargetScrollPosition)
{
VisibleCrollPosition-=我的滚动速度;
}
但是,您会发现这并不是更平滑,而且对快速滚动也不友好,所以您需要研究立方体或其他方法

下面是一些背景阅读和代码示例


请记住,在动画期间,用户可以在任意方向上进一步滚动,因此它需要始终跟随所需的位置。没有什么比向下滚动,然后向上滚动,然后看着视口慢慢地执行这两项操作更令人沮丧的了,而不是直接去我想去的地方。事实上,我个人一点也不喜欢平滑滚动,通常会关闭它以便于立即反馈;因此,如果此表中的用户不是您自己,在投入大量精力之前,请确保考虑到他们的个人喜好。

您的意思是在收到单鼠标滚轮事件时(即,当我单击鼠标滚轮时,实际的滚动立即开始,但在一秒钟后完成),在一段时间内执行滚动动画?好吧,根据动画完成的剩余时间插值滚动位置。