0

我正在制作一个需要“敌人”来回踱步的应用程序,我将如何自动将图片从左向右移动并重复?

这是我当前的代码。

Private Sub Timer1_Timer()
    enemy1.Left = enemy1.Left - 5
End Sub
4

4 回答 4

1
Option Explicit
Const nTwipsPerMove = 15
Private Sub Timer1_Timer()
    Static strDirection As String
    If strDirection = "" Then strDirection = "left"
    If enemy.Left > 0 Then
        If strDirection = "left" Then
            enemy.Left = enemy.Left - nTwipsPerMove
        ElseIf strDirection = "right" Then
            enemy.Left = enemy.Left + nTwipsPerMove
        End If
    End If
    If enemy.Left = 0 Then
        If strDirection = "left" Then strDirection = "right"
        enemy.Left = enemy.Left + nTwipsPerMove
    End If

    If enemy.Left + enemy.Width = Me.Width - nTwipsPerMove * 5 Then
        If strDirection = "right" Then strDirection = "left"
        enemy.Left = enemy.Left - nTwipsPerMove
    End If
End Sub

nTwipsPerMove表示每个循环中移动多少缇 Timer1.Interval = 10

于 2012-10-09T08:35:17.900 回答
0

我现在承认我的 VB 生锈了。自从我使用它以来已经大约 10 年了。我无论如何都不需要测试这段代码,但我认为这个示例应该让你接近,或者至少让你指向正确的方向。

Private Sub Timer1_Timer()
    Do
       enemy1.Left = enemy1.Left - 5
       If enemy1.Left = < 5 Then
          Do
             enemy1.Right = enemy1.Right + 5
          Loop Until enemy1.Right = > 1000 'or whatever your size is
       End If
    Loop
End Sub
于 2012-09-27T18:27:00.040 回答
0

您还可以使用 1 变量作为它的速度,并在敌人必须向其他方向移动时将其设为负数

'1 form with :
'    1 timer : name=Timer1
'    1 picturebox : name=Picture1
Option Explicit

Private msngStep As Single

Private Sub Form_Load()
  Timer1.Interval = 200      'delay in milliseconds between steps
  msngStep = ScaleWidth / 20 'step size, and direction
End Sub

Private Sub Timer1_Timer()
  Dim sngX As Single
  With Picture1 'the enemy
    sngX = .Left + msngStep                              'calculate new position
    If (sngX < 0) Or (sngX > (ScaleWidth - .Width)) Then 'check boundary
      msngStep = msngStep * -1                           'adjust direction
      sngX = sngX + 2 * msngStep                         'keep enemy inside
    End If
    .Left = sngX                                         'move to new position
  End With 'Picture1
End Sub
于 2012-11-08T14:57:03.113 回答
-1

VB(如 C#)应该有一个内置的 Timer 对象。使用计时器,您应该能够创建一个在设定的时间后触发的事件处理程序,在该功能中,您可以移动图片并在仍然需要时重新启动计时器。

于 2012-09-27T18:14:38.653 回答