質問
の標準のおsprites対応マウスをクリックPyGame?
こちらが、私のイベントループ:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit_game()
[...]
elif ( event.type == pygame.MOUSEBUTTONDOWN and
pygame.mouse.get_pressed()[0]):
for sprite in sprites:
sprite.mouse_click(pygame.mouse.get_pos())
につい:
- この最良の方法への対応のマウスをクリック?
- どの場合、マウスに滞在押され、スプライトの一部ですか?ただし、フェイシャルコースの単一のイベントに出することはできるのでしょうか?
- これについて心配する必要がなく、すべての人に周知し、私spritesをクリック?
かまいません。
解決
私は通常私のクリッカブルはあなたの例のように、クリック機能をオブジェクト与えます。クリック機能が呼び出されるとき、私は簡単な反復のために、リスト内のこれらのオブジェクトのすべてを入れています。
チェックするときにを押すマウス・ボタンそのため、イベントのボタンプロパティを使用します。
import pygame
from pygame.locals import * #This lets you use pygame's constants directly.
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN: #Better to seperate to a new if statement aswell, since there's more buttons that can be clicked and makes for cleaner code.
if event.button == 1:
for object in clickableObjectsList:
object.clickCheck(event.pos)
私は、これはそれを行うための推奨される方法であると言うでしょう。ユーザーがボタンを「ドラッグ」されている場合、それは文句を言わないあなたのスプライトを伝えるので、クリックするだけで、一度登録します。それは簡単にMOUSEBUTTONUPとMOUSEBUTTONDOWNイベントにtrueに設定されているブール、偽で行うことができます。ように...その機能を活性化し、ために反復「ドラッグ可能」オブジェクトを持っています。
あなたは、イベントハンドラを使用したくない場合は、しかし、あなたが持つ入力用の更新機能のチェックをさせることができます:
pygame.mouse.get_pos()
pygame.mouse.get_pressed().
それはバグを見つけるのは難しい作成することができますので、これは、大規模なプロジェクトのために悪い考えです。より良いただ一つの場所でイベントを保ちます。シンプルなアーケードゲームのような小さいゲームは、しかしプロービングスタイルを使用して、より意味をなすかもしれません。
所属していません StackOverflow