目前,我正在通过编写一个使用温特处理窗口的小型图形程序来学习Rust。我的目标是使用滚动轮作为输入来实现缩放功能。
我的问题是,我不知道如何访问“增量”或车轮移动了多少(或至少在哪个方向)。我的事件循环如下所示:
event_loop.run(move |event, _, control_flow| {
match event {
Event::WindowEvent {
ref event,
window_id,
} if window_id == window.id() => {
if !state.input(event) {
match event {
// match events
}
}
}
}
});在“匹配事件”一节中,我有处理用户输入事件(如键盘笔画)的所有逻辑。例如,为了匹配一个键,我会这样做:
match event {
WindowEvent::KeyboardInput {
input:
KeyboardInput {
state: ElementState::Pressed,
virtual_keycode: Some(VirtualKeyCode::Space),
..
},
..
}
// continue matching为了匹配鼠标事件,我第一次尝试用WindowEvent::MouseInput,但这似乎是为了用于实际按钮,如左,右击等,所以我尝试使用WindowEvent::MouseWheel。当我移动车轮时,这个事件就会触发,但我不知道如何访问delta,以知道车轮在哪个方向移动以及移动了多少。
我不认为匹配与键一样有效,因为这是一个连续的值。我的猜测是,我需要使用下面代码中的注释从范围中访问"delta“,但我不知道如何做到。
match event {
WindowEvent::MouseWheel {
delta,
..
} => {
// how to access "delta" using "event"?
}发布于 2022-08-11 13:40:17
正如@jmb注释的那样,您只需在匹配之后从作用域中访问“增量”即可。我不知道我在做什么,我没看到。
因为"delta“本身是一个枚举,所以您还需要匹配它,例如:
match event {
WindowEvent::MouseWheel { delta, .. } => {
match delta {
MouseScrollDelta::LineDelta(x, y) => {
//
}
_ => {}
}
}https://stackoverflow.com/questions/73320553
复制相似问题