Picturebox bewegen bij creatie

Status
Niet open voor verdere reacties.

PvtJelo

Nieuwe gebruiker
Lid geworden
2 feb 2014
Berichten
2
Hallo,

Ik probeer een picturebox te bewegen naar rechts , deze picturebox wordt aangemaakt als ik spatie druk;
Ik probeer de picturebox te bewegen via een timer, maar dit werkt niet.
Als ik pbSpider.Left probeer ipv kogel.Left, dan werkt het wel (pbSpider is een picturebox dat ik op de form zelf al gemaakt had)
Enig idee hoe?

Code:
Public Class game
    Private Sub game_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
        If e.KeyCode = Keys.Space Then
            Dim kogel As New PictureBox
            kogel.Height = 5
            kogel.Width = 5
            kogel.Location = New Point(135, 218)
            kogel.BackColor = Color.Black
            kogel.BringToFront()
            kogel.Visible = True
            Me.Controls.Add(kogel)
        End If
    End Sub

    Private Sub Timer1_Tick_1(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim kogel As New PictureBox
        kogel.Left = kogel.Left + 5
    End Sub
End Class
 
Laatst bewerkt:
Hoi,

Als eerste: Welkom op Helpmij.nl! :)

Dan naar je vraag: Dat komt omdat variablen alleen gebruikt kunnen worden in de sub waarin je ze aanmaakt. Zo is de variable Kogel die je aanmaakt in sub "game_KeyDown", alleen beschikbaar in de sub "game_KeyDown".

In de timer doe je dan dit "Dim kogel As New PictureBox" om te zorgen dat er geen error komt, maar op dit moment maakt je opnieuw een variable aan, toevallig met dezelfde naam. Visual basic ziet deze niet als gekoppeld.

Om te zorgen dat je een variable in alle sub's kan gebruiken in een class, zet je hem buiten alle sub's:
[CPP]Public Class game

Private kogel as PictureBox

Private Sub game_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.Space Then
kogel = New PictureBox
kogel.Height = 5
kogel.Width = 5
kogel.Location = New Point(135, 218)
kogel.BackColor = Color.Black
kogel.BringToFront()
kogel.Visible = True
Me.Controls.Add(kogel)
End If
End Sub

Private Sub Timer1_Tick_1(sender As Object, e As EventArgs) Handles Timer1.Tick
kogel.Left = kogel.Left + 5
End Sub
End Class[/CPP]

Als je meerdere kogels wil kunnen afvuren, zal het ietsje ingewikkelder worden. Als je dat toch graag wil, kunnen wij je daar ook wel bij helpen.

MartinJM
 
Ik wil je niet ontmoedigen, maar dit soort dingen moet je echt niet in VB.Net doen, in ieder geval niet zonder enige hulp van externe game programming API's zoals XNA. Als je XNA zou gebruiken zou het een stuk beter gaan, mits je zou weten wat je moet doen. En anders kun altijd nog kijken naar Game Maker of Construct 2, beide programma's zijn prima geschikt om simpele games mee te maken. Misschien is dat wat beter geschikt voor je. :)
 
Hoi,

Als eerste: Welkom op Helpmij.nl! :)

Dan naar je vraag: Dat komt omdat variablen alleen gebruikt kunnen worden in de sub waarin je ze aanmaakt. Zo is de variable Kogel die je aanmaakt in sub "game_KeyDown", alleen beschikbaar in de sub "game_KeyDown".

In de timer doe je dan dit "Dim kogel As New PictureBox" om te zorgen dat er geen error komt, maar op dit moment maakt je opnieuw een variable aan, toevallig met dezelfde naam. Visual basic ziet deze niet als gekoppeld.

Om te zorgen dat je een variable in alle sub's kan gebruiken in een class, zet je hem buiten alle sub's:
[CPP]Public Class game

Private kogel as PictureBox

Private Sub game_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.Space Then
kogel = New PictureBox
kogel.Height = 5
kogel.Width = 5
kogel.Location = New Point(135, 218)
kogel.BackColor = Color.Black
kogel.BringToFront()
kogel.Visible = True
Me.Controls.Add(kogel)
End If
End Sub

Private Sub Timer1_Tick_1(sender As Object, e As EventArgs) Handles Timer1.Tick
kogel.Left = kogel.Left + 5
End Sub
End Class[/CPP]

Als je meerdere kogels wil kunnen afvuren, zal het ietsje ingewikkelder worden. Als je dat toch graag wil, kunnen wij je daar ook wel bij helpen.

MartinJM
Dit werkt helemaal goed dan, bedankt! Zal dit onthouden voor volgende keren.
Ik wil je niet ontmoedigen, maar dit soort dingen moet je echt niet in VB.Net doen, in ieder geval niet zonder enige hulp van externe game programming API's zoals XNA. Als je XNA zou gebruiken zou het een stuk beter gaan, mits je zou weten wat je moet doen. En anders kun altijd nog kijken naar Game Maker of Construct 2, beide programma's zijn prima geschikt om simpele games mee te maken. Misschien is dat wat beter geschikt voor je. :)
Ja, maar het is voor een klein schoolprojectje, het was de bedoeling van een klein spel te maken die dan connecteerde via PhpMyadmin
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan