步驟 5:為每個背景牆加入 MouseEnter 事件處理常式
在迷宮遊戲中,如果在使用者的滑鼠指標每次碰觸到圍牆時,就將指標送回起點,迷宮遊戲會變得更有趣,也更具挑戰性。 在繼續閱讀之前,請先考慮要怎麼編寫程式才能做到。
本主題的影像版本,請參閱教學課程 2: Visual Basic-視訊 3 中建立,當然 或 教學課程 2: 在 C#-視訊 3 中建立,當然。
若要為每個圍牆加入 MouseEnter 事件處理常式
移至 [Windows Form 設計工具],按一下您新加入的任何圍牆。
移至 [屬性] 視窗,然後按一下 [事件] 圖示顯示該圍牆的事件。 向下捲動至 MouseEnter 事件。 不要按兩下,請輸入文字 wall_MouseEnter,然後按 ENTER 鍵。 [事件] 圖示和 [屬性] 視窗顯示如下。
事件圖示
顯示 MouseEnter 事件的屬性視窗
注意事項 當您在 [屬性] 視窗的事件資料表中直接輸入事件名稱時,即表示要讓 IDE 建立具有此名稱的事件處理常式並將它連接至控制項的事件。您通常會希望由 IDE 選擇事件名稱,因為名稱較符合邏輯,且使用這些名稱也能讓其他人更容易閱讀和了解您的程式碼。當 IDE 為事件處理常式選擇名稱時,它會使用控制項的名稱和事件的名稱。在這個案例中,您沒有變更圍牆的預設名稱,即 [label4]、[label18]、[label25] 等。因此,如果按一下名稱為 [label12] 的圍牆,即可看到 IDE 已將事件處理常式命名為 [label12_MouseEnter]。您也可以輸入 [wall_MouseEnter],將其變更為更合適的名稱。如果您對多個控制項使用一個事件處理常式時 (稍後在本教學課程中就會這樣做),這個方法尤其重要。
按下 ENTER 鍵之後,IDE 會為您加入新的事件處理常式,並將該它連接至該圍牆的 MouseEnter 事件。 在程式碼編輯器中,新加入的程式碼應該如下所示。 在 Visual Basic 中,特定的標籤可能不是如程式碼中所示的 Label8。
Private Sub wall_MouseEnter() Handles Label8.MouseEnter End Sub
private void wall_MouseEnter(object sender, EventArgs e) { }
接下來,加入對 MoveToStart() 方法的呼叫,並加入註解來說明方法。 首先,移至該方法並加入陳述式 MoveToStart()。 [IntelliSense] 視窗隨即開啟並顯示下列項目。
IntelliSense 視窗
加入 MoveToStart() 方法後,IDE 會將它加入至 [IntelliSense] 視窗。 您加入的 XML 註解會出現在工具提示中。 當您撰寫含有許多方法的程式時,這會很有用。
按下 TAB 鍵指示 IntelliSense 完成方法的名稱。 如果是撰寫 Visual C# 程式碼,請記得在陳述式尾端加上分號 (;)。 然後在陳述式上方加上註解。 您的程式碼應該看起來與下列範例相同。 在 Visual Basic 中,特定的標籤可能不是如程式碼中所示的 Label8。
Private Sub wall_MouseEnter() Handles Label8.MouseEnter ' When the mouse pointer hits a wall or enters the panel, ' call the MoveToStart() method. MoveToStart() End Sub
private void wall_MouseEnter(object sender, EventArgs e) { // When the mouse pointer hits a wall or enters the panel, // call the MoveToStart() method. MoveToStart(); }
儲存並執行您的程式。 將滑鼠指標移至事件處理常式所連接的圍牆上 (如果忘記您原先選擇哪一面圍牆,將滑鼠指標移至每一面圍牆上,直到找到您要的圍牆為止)。 當您碰觸圍牆時,它會立即將滑鼠指標送回起點。
接下來,您必須對其餘的圍牆進行同樣的設定。 您可以針對每一面圍牆撰寫相同的 MouseEnter 事件處理常式。 但這個過程可能會很漫長,造成程式中產生許多行相同的程式碼,也不易變更。 IDE 提供較輕鬆的作法,可將相同的事件處理常式連接至所有圍牆。
移至 [Windows Form 設計工具],從 [編輯] 功能表按一下 [全選]。
按住 CTRL 鍵,然後按一下 [完成] 標籤清除選取項目。 這樣應該會變成選取所有圍牆和面板。
現在移至 [屬性] 視窗上的事件資料表。 向下捲動至 MouseEnter 事件,然後按一下旁邊的編輯方塊。 您應該會看到下拉箭號。 如果按一下該箭號,您會看到程式中可以針對此事件選擇之所有事件處理常式的清單。 在這個案例中,您應該會看到稍早加入的 finishLabel_MouseEnter 事件處理常式,以及剛撰寫的 wall_MouseEnter 事件處理常式,如下列圖片所示。
MouseEnter 事件和事件處理常式
選取 [wall_MouseEnter] (如果您選取了錯誤的事件處理常式,或不小心加入新的事件處理常式,您可以再次選取所有圍牆和面板,然後選擇正確的方法)。
您的迷宮遊戲現在應該變得更好玩了。 試試看儲存並執行遊戲。 如果指標碰觸到圍牆,或將指標移至迷宮外又移回來,程式應該會自動將指標移回迷宮的起點。
若要繼續或檢視
若要移到下一個教學課程步驟,請參閱步驟 6:加入 SoundPlayer。
若要回到上一個教學課程步驟,請參閱步驟 4:加入方法以重新啟動遊戲。