2015-10-06 121 views
-1

嘗試使用此代碼,以便圖片框自動從左向右移動。該代碼不會給出任何錯誤,但是當我運行該應用程序時,picturebox1會保持不動,並且什麼也不做。我在想:Timer1屬性可能,沒有在timer1屬性中弄亂任何東西,不確定是否應該,或者我可能需要添加更多的代碼或修復它;不確定。 (如果你很好奇我在做什麼以防萬一,我會讓'敵人'從左到右來回移動,等等,'玩家'必須讓過去它沒有擊中它。)PictureBox反覆從左到右移動

Private Sub Timer1_Timer() 
    Do 
     PictureBox1.Left = PictureBox1.Left - 5 
     If PictureBox1.Left <= 5 Then 
      Do 
       PictureBox1.Left = PictureBox1.Right + 5 
      Loop Until PictureBox1.Left >= 1000 
     End If 
    Loop 
End Sub 
+1

該過程不掛接到一個計時器 – user3697824

+0

即時通訊新本,你可以(不要求代碼或任何東西)告訴我如何做到這一點? – RDR

+0

使用工具箱中的計時器組件。這看起來像你編造的代碼,並稱之爲'計時器' – user3697824

回答

0

正如@ user3697824提到的,您發佈的子未連接到您的窗體上的計時器。通常在使用計時器時,您將要運行的代碼放入計時器的Tick方法中。

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    'Your code goes here. 
End Sub 

您可以通過添加一個Handles Timer1.Tick聲明小組的簽名是這樣結尾可能解決上述代碼:

Private Sub Timer1_Timer() Handles Timer1.Tick 
    Do 
     PictureBox1.Left = PictureBox1.Left - 5 
     If PictureBox1.Left <= 5 Then 
      Do 
       PictureBox1.Left = PictureBox1.Right + 5 
      Loop Until PictureBox1.Left >= 1000 
     End If 
    Loop 
End Sub 
+0

所以我得到它的工作(我認爲),但分裂的第二個圖片框移動(我可以看到它移動只是一點點左)應用程序凍結,我必須強行關閉。 – RDR

+0

我發現了這個問題。將嵌套的do循環中的行從'PictureBox1.Left = PictureBox1.Right + 5'更改爲'PictureBox1.Left = PictureBox1.Left + 5'。爲了減慢移動速度,您可以調整Timer1的間隔屬性。 這可能不是您想要使用的技巧,因爲它會導致圖像閃爍。你應該看看一些像DirectX或OpenGL這樣的圖形庫,或者像Unity或Unreal這樣的遊戲引擎,因爲它們會爲你處理所有的圖形代碼! –

+0

另外,如果我的回覆回答了您的問題,請將其標記爲答案。 :) –