<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # **pygame.event** 用于處理事件與事件隊列的 Pygame 模塊。 ## **函數** * pygame.event.pump() — 讓 Pygame 內部自動處理事件 * pygame.event.get() — 從隊列中獲取事件 * pygame.event.poll() — 從隊列中獲取一個事件 * pygame.event.wait() — 等待并從隊列中獲取一個事件 * pygame.event.peek() — 檢測某類型事件是否在隊列中 * pygame.event.clear() — 從隊列中刪除所有的事件 * pygame.event.event\_name() — 通過 id 獲得該事件的字符串名字 * pygame.event.set\_blocked() — 控制哪些事件禁止進入隊列 * pygame.event.set\_allowed() — 控制哪些事件允許進入隊列 * pygame.event.get\_blocked() — 檢測某一類型的事件是否被禁止進入隊列 * pygame.event.set\_grab() — 控制輸入設備與其他應用程序的共享 * pygame.event.get\_grab() — 檢測程序是否共享輸入設備 * pygame.event.post() — 放置一個新的事件到隊列中 * pygame.event.Event() — 創建一個新的事件對象 * pygame.event.EventType — 代表 SDL 事件的 Pygame 對象 Pygame 通過事件隊列控制所有的時間消息。該模塊中的程序將幫你管理事件隊列。輸入隊列很大程度依賴于 pygame 的 display 模塊。如果 display 沒有被初始化,顯示模式沒有被設置,那么事件隊列就還沒有開始真正工作。 常規的隊列是由 pygame.event.EventType 定義的事件對象的組成,有多種方法來訪問里邊的事件對象:從簡單的檢測事件是否存在,到直接從棧中獲取它們。 所有事件都有一個類型標識符,這個標識符對應的值定義在 NOEVENT 到 NUMEVENTS 之間(溫馨提示:類似于 C 語言的宏定義,明白?)。用戶可以自行定義事件,但類型標識符的值應該高于或等于 USEREVENT。 獲取各種輸入設備的狀態,推薦你直接通過它們相應的模塊(mouse,key 和 joystick)提供的函數訪問,而不是通過事件隊列; 如果你使用此函數,請記住,Pygame 需要通過一些方式與系統的窗口管理器和平臺的其他部分進行通信。為了保持 Pygame 和系統同步,你需要調用 pygame.event.pump() 確保實時更新,你將在游戲的每次循環中調用這個函數。 事件隊列提供了一些簡單的過濾。通過阻止某些事件進入事件隊列,可以略微提高游戲的性能(溫馨提示:因為這樣事件隊列的尺寸就會小一些,所以說可以略微提升性能)。使用 pygame.event.set\_allowed() 和 pygame.event.set\_blocked() 來控制某些事件是否允許進入事件隊列。默認所有事件都會進入事件隊列。 事件子系統應該在主線程被調用。如果你希望從其他線程中投遞事件消息進入事件隊列,請使用 fastevent 包。 Joysticks(游戲手柄)只有在設備初始化后才會發送事件。 一個 EventType 事件對象包含一個事件類型標識符和一組成員數據(事件對象不包含方法,只有數據)。EventType 對象從 Python 的事件隊列中獲得,你也可以使用 pygame.event.Event() 函數創建自定義的新事件。 由于 SDL 的事件隊列限制了事件數量的上限(標準的 SDL 1.2 限制為 128),所以當隊列已滿時,新的事件將會被扔掉。為了防止丟失事件消息,尤其是代表退出的輸入事件(因為當用戶點擊退出按鈕沒有反應,往往會被認為“死機”了),你的程序必須定期檢測事件,并對其進行處理。 為了加快事件隊列的處理速度,可以使用 pygame.event.set\_blocked() 函數阻止一些我們不關注的事件進入隊列中。 所有的 EventType 實例對象都擁有一個事件類型標識符,屬性名是 type。你也可以通過事件對象的 **dict** 屬性來完全訪問其他屬性。所有其他成員屬性的值都是通過事件對象的字典來傳遞。 在做調試和實驗時,你可以打印事件對象以及相應的類型和成員。來自系統的事件都有一個事件類型和對應的成員屬性,下邊是每個事件類型以及對應的成員屬性列表: | **事件類型** | **成員屬性** | | --- | --- | | QUIT | none | | ACTIVEEVENT | gain, state | | KEYDOWN | unicode, key, mod | | KEYUP | key, mod | | MOUSEMOTION | pos, rel, buttons | | MOUSEBUTTONUP | pos, button | | MOUSEBUTTONDOWN | pos, button | | JOYAXISMOTION | joy, axis, value | | JOYBALLMOTION | joy, ball, rel | | JOYHATMOTION | joy, hat, value | | JOYBUTTONUP | joy, button | | JOYBUTTONDOWN | joy, button | | VIDEORESIZE | size, w, h | | VIDEOEXPOSE | none | | USEREVENT | code | 事件支持等值比較。如果兩個事件具有相同的類型和屬性值,那么認為兩個事件是相等的。(Pygame 1.9.2 新增加的) ## **函數詳解** ### **pygame.event.pump()** 讓 Pygame 內部自動處理事件。 pump() -> None 對于游戲中的每一幀,你都需要通過某種形式去調用事件隊列,這將確保你的程序在內部可以與操作系統的其他部分進行交互。如果你不打算使用其他事件函數,那么你應該調用 pygame.event.pump(),這將允許 Pygame 內部自動處理事件。 如果你的程序始終通過其他 event 模塊的函數處理隊列中的事件,那么該函數是沒必要的。 事件隊列中的內部處理是非常重要的事情。主窗口可能需要重新繪制或對系統做出響應。如果你太長時間沒有調用事件隊列,系統可能會認定你的程序已鎖定(假死)。 ### **pygame.event.get()** 從隊列中獲取事件。 get() -> Eventlist get(type) -> Eventlist get(typelist) -> Eventlist 這將獲取并從隊列中刪除事件。如果指定一個或多個 type 參數,那么只獲取并刪除指定類型的事件。 請注意,如果你只從隊列中獲取和刪除指定的事件,那么久而久之,隊列可能被你不關注的事件所填滿。 ### **pygame.event.poll()** 從隊列中獲取一個事件。 poll() -> EventType instance 從隊列中返回并刪除一個事件。 如果事件隊列為空,那么會立刻返回類型為 pygame.NOEVENT 的事件。 ### **pygame.event.wait()** 等待并從隊列中獲取一個事件。 wait() -> EventType instance 從隊列中返回并刪除一個事件。如果隊列為空,那么該函數將持續等待直至隊列中有一個事件。當程序在等待時,它將保持睡眠狀態。這對于希望與其他應用程序共享系統來說,是非常重要的。 ### **pygame.event.peek()** 檢測某類型事件是否在隊列中。 peek(type) -> bool peek(typelist) -> bool 如果參數指定的類型的事件存在于隊列中,返回 True。 如果參數指定多個類型的事件,則只需隊列中擁有其中的任何一個事件便返回 True。 ### **pygame.event.clear()** 從隊列中刪除所有的事件。 clear() -> None clear(type) -> None clear(typelist) -> None 從隊列中刪除所有的事件,如果通過參數指定事件的類型,則刪除該類型的所有事件。該函數的效果跟 pygame.event.get() 相同,只是沒有返回任何東西。當處理完關注的事件后,清空整個隊列可以提高一些效率。 ### **pygame.event.event\_name()** 通過 id 獲得該事件的字符串名字。 event\_name(type) -> string Pygame 通過整數 id 代表事件類型。如果你需要將這些類型的事件展示給用戶看,那么你需要將它們轉換成字符串(一堆數字誰知道你想表示啥?)。該函數將返回事件類型對應的字符串名字。返回值是以單詞大寫的樣式(小甲魚溫馨提示:DanCiDaXieDe)。 ### **pygame.event.set\_blocked()** 控制哪些事件禁止進入隊列。 set\_blocked(type) -> None set\_blocked(typelist) -> None set\_blocked(None) -> None 參數指定的類型的事件均不允許出現在事件隊列中。默認是允許所有事件進入隊列。多次禁止同一類型的事件并不會引發什么問題。 如果傳入 None,則表示允許所有的事件進入隊列。 ### **pygame.event.set\_allowed()** 控制哪些事件允許進入隊列。 set\_allowed(type) -> None set\_allowed(typelist) -> None set\_allowed(None) -> None 參數指定的類型的事件均允許出現在事件隊列中。默認是允許所有事件進入隊列。多次允許同一類型的事件并不會引發什么問題。 如果傳入 None,則表示禁止所有的事件進入隊列。 ### **pygame.event.get\_blocked()** 檢測某一類型的事件是否被禁止進入隊列。 get\_blocked(type) -> bool 如果參數指定類型的事件被禁止進入隊列,則返回 True。 ### **pygame.event.set\_grab()** 控制輸入設備與其他應用程序的共享。 set\_grab(bool) -> None 當你的程序運行在窗口環境中,它將與其他擁有焦點的應用程序分享鼠標和鍵盤設備的輸入。如果你的程序設置事件獨占為 True,那么你的程序將鎖定所有的輸入(小甲魚溫馨提示:不共享給其他程序了)。 最好不要經常獨占輸入,因為這將阻止用戶在操作系統上的其他操作。 ### **pygame.event.get\_grab()** 檢測程序是否共享輸入設備。 get\_grab() -> bool 當程序獨占輸入事件時,返回 True。使用 pygame.event.set\_grab() 函數控制這一狀態。 ### **pygame.event.post()** 放置一個新的事件到隊列中。 post(Event) -> None 該函數將放置一個新的事件到事件隊列的末端。這些事件將最遲被其他隊列函數獲取。 該函數通常用于放置 pygame.USEREVENT(用戶自定義事件)事件到隊列中。盡管你可以放置所有類型的事件,但你需要確保為系統事件類型相應的屬性傳遞合適的值。 如果 SDL 事件隊列已滿,將拋出 pygame.error 異常。 ### **pygame.event.Event()** 創建一個新的事件對象。 Event(type, dict) -> EventType instance Event(type, \*\*attributes) -> EventType instance 根據參數給定的類型創建一個新的事件。dict 參數指定事件的屬性以及相應的值。 ### **class pygame.event.EventType** 代表 SDL 事件的 Pygame 對象。 pygame.event.EventType.type — SDL event type identifier. pygame.event.EventType.**dict** — vent object attribute dictionary 用于代表 SDL 事件的 Pygame 對象。通過 pygame.event.Event() 創建用戶自定義事件。EventType 類型并不是直接可以被調用的。EventType 實例對象支持屬性賦值和刪除。 ### **type** SDL 事件類型標識符。 type -> int 只讀。預定義事件標識符是 QUIT 和 MOUSEMOTION 等。對于用于創建的事件對象,這是傳遞給 pygame.event.Event() 的 type 參數。 ### ****dict**** 事件對象的屬性字典。 **dict** -> dict 只讀。事件類型指定的屬性。例如,KEYDOWN 事件包含 unicode,key 和 mod 屬性。 可變屬性是 Pygame 1.9.2 新增加的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看