gpt4 book ai didi

user-interface - 在 NetLogo 中检测鼠标点击/鼠标松开

转载 作者:行者123 更新时间:2023-12-02 01:06:21 26 4
gpt4 key购买 nike

在 NetLogo 中使用 mouse-down? 进行鼠标操作通常会导致操作发生太多次。例如,如果您想让用户点击以创建新的海龟,您可以将一个永久按钮挂接到如下过程:

to add-turtle
if mouse-down? [
crt 1 [ setxy mouse-xcor mouse-ycor ]
]
end

问题是这通常会导致每次点击创建许多海龟。我想做类似的事情:

to add-turtle
if mouse-clicked? [
crt 1 [ setxy mouse-xcor mouse-ycor ]
]
end

mouse-clicked? 在用户点击时为真(在他们离开鼠标按钮之后)。

最佳答案

不幸的是,您必须自己跟踪它,但好消息是这并不难。

关键是创建一个名为 mouse-was-down? 的全局变量,如果 mouse-down? 上次鼠标按下时为真,则将其设置为真定向程序被调用。那么mouse-clicked?可以定义如下:

to-report mouse-clicked?
report (mouse-was-down? = true and not mouse-down?)
end

它似乎与调用其他基于点击的程序的中央鼠标管理程序结合使用效果很好。例如:

globals [ mouse-was-down? ]

to-report mouse-clicked?
report (mouse-was-down? = true and not mouse-down?)
end

to mouse-manager
let mouse-is-down? mouse-down?
if mouse-clicked? [
add-turtle
; Other procedures that should be run on mouse-click
]
set mouse-was-down? mouse-is-down?
end

to add-turtle
crt 1 [ setxy mouse-xcor mouse-ycor ]
end

如果在 mouse-manager 完成之前释放鼠标按钮,使用 mouse-is-down? 局部变量可以使行为更加一致。

关于user-interface - 在 NetLogo 中检测鼠标点击/鼠标松开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com