我想使用SetCursorPos将鼠标困在窗口中间(就像在 FPS 游戏中一样)。
问题是,当我这样做时,我的窗口会收到一个 WM_MOUSEMOVE——它充其量抵消了用户想要的任何移动,最坏的情况是进入反馈循环。
我考虑过使用 GetCursorPos 读取位置并忽略消息,如果它与我使用 SetCursorPos 移动它的位置相同。但是这种方法的问题在于鼠标是异步的。如果程序落后,那么 GetCursorPos 将返回一个与我预期不同的值——因此它不会知道忽略该消息。
有没有好的方法来处理这个问题?
我试图通过"mousemove"在画布上使用鼠标左右方形.
function start(){
var canvastmp = document.getElementById("myCanvas")
var canvas = canvastmp.getContext("2d");
window.addEventListener('mousemove', trevor, false);
}
function trevor(pos){
canvas.clearRect(0,0,600,400);
var x = pos.clientX;
var y = pos.clientY;
canvas.fillRect(x-25,y-25,100,100);
}
window.addEventListener('load',start,false);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,什么都没有显示出来.我一直在调整它并且现在已经研究了一段时间,我似乎无法弄清楚什么是错的.再一次,我很抱歉这个完全没有问题!任何帮助都非常感谢.
此外,我正在使用Chrome,如果这有帮助.
我有一个同源的 iframe。iframe 中的鼠标事件在文档中触发,如下所示:
// this won't work
$('iframe').contents().find('body').on('mousedown mouseup mousemove', function(e) {
$(document).trigger(e);
});
// this does work
$('iframe').contents().on('mousedown mouseup mousemove', function(e) {
$(document).trigger(e);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是如果在 iframe 中发生 mousedown 并且鼠标离开 iframe,则在发生 mouseup 之前,文档不会触发它自己的 mousemove 事件。
一旦鼠标离开 iframe,我已经尝试在 iframe 和文档中触发 mouseup,但文档 mousemove 事件在发生物理 mouseup 之前不会恢复。
我们有一个带有 Hwndhost 元素的 Wpf 应用程序,用于通过 DirectX 渲染 3D 内容。我们向客户端公开一个“Panel”接口,其中包含 MouseEnter 和 MouseLeave 事件。对于 Hwndhost“面板”,当我们第一次收到 HwndHost.WndProc 的 WM_MOUSEMOVE 事件时,我们模拟 MouseEnter 事件,因为 win32 没有 WM_MOUSEENTER 事件。另外,对于 HwndHost,我们通过 TrackMouseEvent() 请求 WM_MOUSELEAVE 事件,该事件在我们的“面板”界面上模拟 MouseLeave 事件。
问题是,当用户非常快速地将鼠标移动到 HwndHost 面板或从 HwndHost 面板移出时,我们会先收到鼠标移动到的面板的 Enter 事件,然后再收到鼠标移动的面板的离开事件。 当源面板和目标面板都是 wpf 元素时,不会发生这种情况,仅当涉及 hwndhost 元素时。另外,如果有两个 HwndHost 元素彼此相邻,则会发生相同的行为,因此看起来 win32 没有按照消息发生的顺序发送消息。
有谁知道解决这个问题的方法吗? 如果有一种方法可以让 Win32 按照事件发生的顺序发送事件,那就太好了。
下面是一个示例应用程序,它演示了向调试器输出窗口打印消息的问题:
// App.xaml.cs
using System;
using System.Windows;
using System.Runtime.InteropServices;
namespace WpfHostingWin32Control
{
public partial class App : Application
{
[DllImport("comctl32.dll", EntryPoint = "InitCommonControls", CharSet = CharSet.Auto)]
public static extern …Run Code Online (Sandbox Code Playgroud) 我有这个小提琴http://jsfiddle.net/JqBZb/193/我希望我的对象仅在按下红色方块时移动,但是当用户释放鼠标时我无法删除 mousemove 操作。在那之后它仍然会移动。
HTML:
<div class="pointer">
<div class="marker"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.marker {
background:#ED1C24;
height:2px;
right:0;
position:absolute;
top:35px;
width:7px
}
.pointer {
height:72px;
position:absolute;
top:82px;
width:72px;
border:1px solid red;
left:100px;
}
Run Code Online (Sandbox Code Playgroud)
爪哇脚本:
var img = $('.pointer');
var offset = img.offset();
function mouse(evt) {
var center_x = (offset.left) + (img.width() / 2);
var center_y = (offset.top) + (img.height() / 2);
var mouse_x = evt.pageX;
var mouse_y = evt.pageY;
var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
var degree = …Run Code Online (Sandbox Code Playgroud) 我正在尝试mousemove使用 jQuery手动触发事件。演示在这个小提琴http://jsfiddle.net/qJJQW/
从 Stack Overflow 上的其他类似帖子来看,这似乎应该有效。为什么不是?
我正在尝试使用 js 滑块slick,但是当我在我的网站上包含滑块代码时,默认的“可拖动”选项不起作用。更具体地说,我无法在幻灯片 div 或网页 (Chrome) 中的文档上捕获任何 mousemove 事件。
在本地运行代码时,我可以毫无问题地观察 'mouseup'、'mousemove' 和 'mouseup' 事件,但是当我将滑块代码放入网页时,我只能观察到 'mouseup' 和 'mousedown' 事件.
下面是工作的本地代码。如果您运行它,它将在滑块 div 内记录 mousedown、mousemove 和 mouseup 事件。
当我将相同的代码移动到网站时,我无法观察到来自滑块 div 或文档的任何 mousemove 事件。是否有一些 js 已经在运行,可以完全阻止页面触发 mousemove 事件?
<html>
<head>
<title>My Now Amazing Webpage</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme.css"/>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.js"></script>
</head>
<body>
<style>
#container {
width: 450px;
height: 300px;
margin: 0 auto;
border: 2px solid black;
}
</style>
<div id="container">
<div class="your-class">
<div><img src="http://lorempixel.com/300/300" /></div>
<div><img …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个具有以下效果的页面:
。
我是对的,直到我尝试为其添加背景。我习惯了 Photoshop(带有图层和蒙版),但不幸的是 html 没有蒙版。
这是我所拥有的。
jQuery:
$(document).ready(function() {
// calculate screen size
var pageHeight = $(window).height();
var pageWidth = $(window).width();
$(window).on('mousemove', function(event) {
// horizontal offset
// 100% = completely dependable on mouse position
var differenceFactor = 5;
var mouse_x = event.pageX + 1
var mouse_xPercentage = 100 / (pageWidth / mouse_x);
var transformX = (mouse_x * -1) / (100 / differenceFactor) - (pageWidth);
var actualTransform = transformX;
// vertical offset
// base degrees
var …Run Code Online (Sandbox Code Playgroud) 我在IntelliJ IDE中使用该代码创建了Java文件
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Robot;
public class JavaRobotExample {
public static void main(String[] args) {
int x = 12,
y = 300;
try {
Robot robot = new Robot();
robot.mouseMove(x, y);
int xAct = (int) MouseInfo.getPointerInfo().getLocation().getX(),
yAct = (int) MouseInfo.getPointerInfo().getLocation().getY();
String sPred = String.format("Predicted mouse location : %, d, %, d", x, y),
sAct = String.format("Actual mouse location : %, d, %, d", xAct, yAct);
System.out.println(sPred);
System.out.println(sAct);
} catch (AWTException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
该示例在Windows …
我如何在指针事件无div上触发mousemove事件,我无法编辑页面的html,只能编辑javascript(银行)
<h1>title</h1>
<div class="wrapper">
<h3>element 1</h3>
<h3>element 2</h3>
</div>
Run Code Online (Sandbox Code Playgroud)
该脚本当前仅触发主体作为目标,而不是元素
document.body.addEventListener("mousemove", function(e) {
console.log(e.target)
})
Run Code Online (Sandbox Code Playgroud)
mousemove ×10
javascript ×5
jquery ×4
events ×2
html ×2
awtrobot ×1
canvas ×1
css ×1
html5 ×1
hwndhost ×1
iframe ×1
java ×1
macos ×1
macos-mojave ×1
mouseenter ×1
mouseevent ×1
mouseleave ×1
transform ×1
winapi ×1
wpf ×1