- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法捕捉鼠标滚轮滚动开始和停止之间的时间间隔?实际上,当我快速滚动鼠标滚轮时,我想捕获滚动开始和停止之间的间隔。
我已经查看了 MouseWheel 事件,但它不满足我的要求。在某些情况下,它总是给出 Delta 120 或 -120 的值,但我想根据鼠标滚动的速度调用一个函数,例如,当我正常滚动鼠标时,我想执行功能 1,当我非常滚动鼠标时我想快速执行功能 2。换句话说,有什么方法可以区分鼠标滚动高速和正常速度。
任何建议将不胜感激。
最佳答案
您能否捕获鼠标滚轮事件并查看它们之间的时间间隔。基本上,当您收到鼠标滚轮事件时启动一个计时器,然后在下一个事件中查看计时器的时间(以及事件之间经过了多长时间)以确定滚轮转动的速度?如果 elapsedtime 小于某个阈值,则执行函数 2,如果它快于某个阈值,则执行函数 1。
如果计时器关闭,您可能必须将其设置为执行功能 1,以防他们只进行一次滚动。
事实上你可以这样做:
在鼠标滚轮事件中启动一个计时器(具有指示鼠标滚动缓慢的时间间隔),然后如果计时器关闭,则执行功能 1。如果鼠标滚轮事件在计时器关闭之前再次发生,则重置计时器并增加一个计数器(以跟踪自从你做事以来车轮事件中的数量)然后启动第二个(更长的)计时器。如果计数器大于某个阈值,则执行功能 2。当第二个计时器结束时,重置计数器。按照这些思路,您应该能够在慢速转动车轮时启动功能 1,并在快速转动车轮时通过几次“点击”启动功能 2。
这段代码应该给出(非常肮脏的)指示,说明我正在考虑的事情。玩了一会儿之后,我不确定这是不是一个好的解决方案......
private void mouseWheelHandler (object sender, MouseEventArgs e)
{
slowTimer.Enabled = false;
slowTimer.Stop ();
slowTimer.Interval = 200;
slowTimer.Start();
slowTimer.Enabled = true;
m_counter++;
Trace.WriteLine(string.Format("counter={0}", m_counter));
if (fastTimer.Enabled==false)
{
fastTimer.Enabled = true;
fastTimer.Interval = 150;
fastTimer.Start ();
}
if (m_counter>5)
{
Trace.WriteLine("called method 2");
m_counter = 0;
fastTimer.Stop ();
slowTimer.Enabled = false;
slowCheckTimer.Stop ();
slowCheckTimer.Interval = 250;
slowCheckTimer.Start();
slowCheckTimer.Enabled = true;
}
}
private void slowTimer_Tick(object sender, EventArgs e)
{
Trace.WriteLine("slow timer ticked");
if (slowCheckTimer.Enabled==false)
{
Trace.WriteLine ("called method 1");
}
slowTimer.Enabled = false;
}
private void fastTimer_Tick(object sender, EventArgs e)
{
fastTimer.Enabled = false;
Trace.WriteLine("fast timer ticked");
m_counter = 0;
fastTimer.Stop ();
}
private void slowCheckTimer_Tick(object sender, EventArgs e)
{
Trace.WriteLine("slow check timer ticked");
slowCheckTimer.Stop ();
slowCheckTimer.Enabled = false;
}
关于c# - 鼠标滚轮滚动 - 如何捕获滚动开始和停止之间的时间间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866605/
我相信绝大多数小伙伴在自学python时,运用pycharm进行编写程序时发现字体太小不方便进行编写,通常像codeblocks这样的编程软件可以通过“ctrl+滚轮”进行放大和缩小。而
在我的应用程序中,我使用了 Scroller零件。我似乎无法弄清楚我应该在哪个事件上设置一个监听器以便知道何时滚动内容。我试过Event.CHANGE在 Scroller.verticalScroll
我正在使用一个简单的 progressDialog,它运行正常但轮子没有进步: //Progress Dialog final ProgressDialog dialo
我想在点击文本字段时关闭键盘,以便为该文本字段下方的选择器留出空间。 struct ContentView: View { @State private var date = Date()
我是一名优秀的程序员,十分优秀!