0

pygame でグラフィカル インターフェイスを作成しています。プログラムは通常高速で実行されますが、キーを押すたびに、マウスが 0.5 秒間動かなくなります。誰かが私に方向性を教えてくれるかどうか疑問に思っています。

これが私のコードがどのように機能するかの一般的な感覚です。問題はすべてのキーバインド関数で一貫して発生するため、トップレベルのメインループ、バインディング、またはインフラストラクチャに問題があると思います。



#######PERPETUAL ACTIONS#
_perpetual_actions = []

def start_doing(function,insertAt=None):
    global _perpetual_actions
    if insertAt==None:
        insertAt=len(_perpetual_actions)
    _perpetual_actions.insert(insertAt,function)

def stop_doing(function):
    global _perpetual_actions
    if _perpetual_actions.count(function):
        _perpetual_actions.remove(function)

def do_perpetual_actions():
    global _perpetual_actions
    for action in _perpetual_actions:
        action()

def print_perpetual_actions():
    global _perpetual_actions
    for action in _perpetual_actions:
        print action.__name__


######BINDING INFRASTRUCTURE######## 

_bindings_dict = { }

def get_action(key, mod):
    try:
        action = _bindings_dict[(key,mod)]
    except KeyError:
        action = None
    return action

def get_binding(action_to_find):
    for event, action in _bindings_dict.iteritems():
        if action == action_to_find:
            return event
    return None

def bind(event, action):
    _bindings_dict[event] = action

def unbind(event):
    _bindings_dict.pop(event)

def swap_bindings(newBindings):
    _bindings_dict = newBindings




####MAIN LOOP####
if '-t' in sys.argv:
    test()
while True:
    for event in pygame.event.get():
        if event.type == MOUSEMOTION: 
            mousex, mousey = event.pos 
            mouse.x = mousex 
            mouse.y = mousey 
        elif event.type == KEYDOWN:
            action = get_action(event.key,event.mod)
            if not action == None:
                action()
        elif event.type == KEYUP:
            action = get_action(-event.key,event.mod)
            if not action == None:
                action()
        elif event.type == QUIT:
            quit()
    do_perpetual_actions()
    clock.tick(40)

バインディング ディクショナリは後で定義され、将来のある時点で、プログラムの実行中にユーザーが変更できるようになります。関係のない推奨事項がある場合はお知らせください。私は始めたばかりで、パイゲームのアドバイスをいただければ幸いです:)

4

0 に答える 0