You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic如何检测鼠标按下、释放事件并获取对应坐标

AnyLogic鼠标按下/释放事件及坐标捕获实现方案

该需求可完全通过AnyLogic原生功能实现,无需依赖第三方插件或自定义扩展。

1. 提前定义所需变量

在你当前使用的Agent/演示画布的变量面板中添加以下变量:

  • pressX、pressY:类型为double,用于存储鼠标按下时的坐标
  • releaseX、releaseY:类型为double,用于存储鼠标释放时的坐标
  • 可选变量isDragging:类型为boolean,初始值设为false,用于标记当前是否处于拖拽状态,避免误触发逻辑

2. 为目标对象绑定事件逻辑

选中你需要监听事件的图像/自定义形状对象,打开属性面板的动作标签页,分别配置两类鼠标事件的代码:

鼠标按下事件(onMouseDown)

写入以下代码:

// 若需要获取相对于当前对象的局部坐标,替换为getMouseX(this)、getMouseY(this)
pressX = getMouseX();
pressY = getMouseY();
isDragging = true;

鼠标释放事件(onMouseUp)

写入以下代码:

if(isDragging){
    // 若需要获取相对于当前对象的局部坐标,替换为getMouseX(this)、getMouseY(this)
    releaseX = getMouseX();
    releaseY = getMouseY();
    isDragging = false;
    
    // 此处可添加你的自定义业务逻辑,比如计算拖拽位移、生成对应模型元素等
    // 测试时可直接打印坐标验证:
    traceln("按下坐标:(" + pressX + "," + pressY + ") | 释放坐标:(" + releaseX + "," + releaseY + ")");
}

注意事项

  • 若需要监听拖拽过程中的实时鼠标坐标,可补充配置onMouseMove事件,在isDragging为true时实时读取当前鼠标坐标即可
  • 若需要实现全画布范围的拖拽监听,无需绑定到特定元素,直接把上述事件绑定到顶级演示画布对象上即可
  • 若需要同时监听多个不同元素的拖拽事件,可将变量定义为对应元素的自定义属性,避免不同元素的事件逻辑互相干扰

内容的提问来源于stack exchange,提问作者Amit Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:24:04