"Protected", kanske, eller skapa objekt av dina fiskar.
Tjohej.
Jag har konfronterat ett problem. Jag skapar i mitt program PictureBoxes (med fiskbilder i, det är ett spel). Jag använder en function till detta. Själva "skapandet" av en picturebox gör man med:
Dim aFish As New System.Windows.Forms.PictureBox
Jag måste ha detta i en function för att kunna skapa ett visst antal fiskar när jag trycker på startknappen eller på formload. Därför kan jag inte använda Public när jag declarar, för då skapas bara en fisk på Formload, sedan skapas inga fler.
Detta är alltså problemet. Anledningen nu då till att jag måste använda något liknande public är att jag måste flytta fiskarna, och det gör jag med en annan funktion, movefishes(). Och i den functionen är inte aFish declarad längre.
Jag kan inte heller slå ihop funktionerna, och skapa 10 fiskar i en loop och sedan flytta dem i en annan, för då är aFish bara declarat i den loopen.
Panik, snälla hjälp mig!
Providar lite kod också:
Public Function AddNewButton() As System.Windows.Forms.PictureBox
Dim aFish As New System.Windows.Forms.PictureBox
Me.List.Add(aFish)
HostForm.Controls.Add(aFish)
aFish.Top = 10
aFish.Left = 208 + Rnd(10) \* 500
If aFish.Left \< 208 Then
aFish.Left = 208 + Rnd(10) \* 100
End If
If aFish.Left + 60 \> 504 Then
aFish.Left = 208 + Rnd(10) \* 200
End If
aFish.Tag = Me.Count
aFish.Width = 60
aFish.Height = 103
aFish.Enabled = True
aFish.BorderStyle = BorderStyle.None
aFish.Image = Image.FromFile(Application.StartupPath & "/fish.gif")
aFish.BringToFront()
Return aFish
End Function
Public Function movefish()
Dim i = 1
For i = 0 To 10
aFish.Tag(i).Top = aFish.Tag(i).Top + Rnd(10) \* 10 + 15
'This is where aFish is undeclared.
i = i + 1
Next
End Function