gpt4 book ai didi

release - 区分鼠标按下和鼠标按住

转载 作者:行者123 更新时间:2023-12-04 06:32:41 25 4
gpt4 key购买 nike

我目前正在为 pyglet 开发一个小图形库。该模块用于制作完全由线条组成的矢量图形。

在其开发过程中,我遇到了一个问题,单击拖动(并移动一个点)也会引发一个 on_mouse_press 事件,该事件会在最后一个事件链接和您尝试拖动的点之间创建一个新链接。

我似乎想不出任何方法来解决这个问题,这会使创建点之间的链接感觉迟缓,我已经创建了 on_mouse_release 链接,以便我可以确定在链接点之前是否已拖动鼠标。

有没有其他人对我如何让它工作而不显得迟钝有任何好主意。

编辑:澄清我在 python 中使用 pyglet

最佳答案

#!/usr/bin/python
import pyglet
from time import time, sleep

class Window(pyglet.window.Window):
def __init__(self, refreshrate):
super(Window, self).__init__(vsync = False)
self.frames = 0
self.framerate = pyglet.text.Label(text='Unknown', font_name='Verdana', font_size=8, x=10, y=10, color=(255,255,255,255))
self.last = time()
self.alive = 1
self.refreshrate = refreshrate
self.click = None
self.drag = False

def on_draw(self):
self.render()

def on_mouse_press(self, x, y, button, modifiers):
self.click = x,y

def on_mouse_drag(self, x, y, dx, dy, buttons, modifiers):
if self.click:
self.drag = True
print 'Drag offset:',(dx,dy)

def on_mouse_release(self, x, y, button, modifiers):
if not self.drag and self.click:
print 'You clicked here', self.click, 'Relese point:',(x,y)
else:
print 'You draged from', self.click, 'to:',(x,y)
self.click = None
self.drag = False

def render(self):
self.clear()
if time() - self.last >= 1:
self.framerate.text = str(self.frames)
self.frames = 0
self.last = time()
else:
self.frames += 1
self.framerate.draw()
self.flip()

def on_close(self):
self.alive = 0

def run(self):
while self.alive:
self.render()
# ----> Note: <----
# Without self.dispatc_events() the screen will freeze
# due to the fact that i don't call pyglet.app.run(),
# because i like to have the control when and what locks
# the application, since pyglet.app.run() is a locking call.
event = self.dispatch_events()
sleep(1.0/self.refreshrate)

win = Window(23) # set the fps
win.run()

简短的介绍:
  • 跟踪窗口内的当前鼠标状态
  • 跟踪鼠标事件的起点
  • 在鼠标释放时,做你想做的事情或更新拖动中的任何内容。

  • 我知道这是一个老问题,但它在“未回答”之下,所以希望能解决它并从列表中删除。

    关于release - 区分鼠标按下和鼠标按住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5215215/

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