Hola, quiero crear un esta clase Timer para mover unos villanos en un tablero aleatoriamente ,el codigo es el siguiente..
Imports System
Imports System.Timers
Public Class Timerclase
Private Shared aTimer As New System.Windows.Forms.Timer()
Shared villa1 As Villano
Shared villa2 As Villano
Shared villa3 As Villano
Shared heroe As Heroe
Private Shared Sub timermovervillanos(ByVal myObject As Object, _
ByVal myEventsArgs As EventArgs)
If heroe.GetMuerto = False Then
If villa1.GetMuerto = False Then
villa1.move()
End If
If villa2.GetMuerto = False Then
villa2.move()
End If
If villa3.GetMuerto = False Then
villa3.move()
End If
End If
main()
End Sub
Public Shared Sub main()
AddHandler aTimer.Tick, AddressOf timermovervillanos
aTimer.Enabled = True
aTimer.Interval = 500
aTimer.Start()
End Sub
End Class
con un timer arrastrado desde controles y poniendo solo los if me va pero yo quiero controlar este timer para que luego lo llame en un metodo y funcione,
No estoy seguro de qué intentas hacer después de los "if" llamando nuevamente a main().
If villa3.GetMuerto = False Then
villa3.move()
End If
End If
main()
End Sub
Dime una cosa, ¿la aplicación colapsa o sigue funcionando pero no como esperabas?
En caso de que sea lo segundo verifica que la llamada al método que contiene los "if" se lleve a cabo; colócale un punto de interrupción en la línea:
Private Shared Sub timermovervillanos(ByVal myObject As Object, ByVal myEventsArgs As EventArgs)
Si la aplicación llega hasta ahí, has la ejecución línea por línea para ver dónde está el error.
Otra cosa, intenta lo mismo comenzando con un punto de interrupción en tu método "main()".
Saludos y suerte.
Hola Benjo , coloque un punto de interrupción en los dos lados y es como si el programa "pasara de ellos" si coloco un timer arrastrando desde controles lo cual genera un timer1.tick(...) handles timer1.tick y desde ahi si lo mueve pero yo quiero crearlo con clase y luego llamarlo en un evento por ejemplo TimerClase.Main() para hacerlo funcionar pero no se porqué no va..!
Vos queres que haga lo mismo que el timer pero desde una clase?
Creo que entiendo eso, por que no pones un bucle con condición para saber cuando salir y listo.
O bien podes enviar de vuelta a funcionar el code hasta que se te de la gana como algo asi mira:
DeNuevo:
If CheckBox1.Checked = 0 Then Exit Sub
If heroe.GetMuerto = False Then
If villa1.GetMuerto = False Then
villa1.move()
End If
If villa2.GetMuerto = False Then
villa2.move()
End If
If villa3.GetMuerto = False Then
villa3.move()
End If
End If
goto DeNuevo
End Sub
Entonces va a ejecutar el code siempre hasta que desmarques el checkbox, pero la condición la pones a tu criterio es un ejemplo.
Si se cuelga ponele un Application.DoEvents() para darle respiro.
Saludos.
No me sirvió.....Alguien puede ayudarme????????
Alguien puede ayudarme??????????????????????????????????????????????????
Si planteas de otra manera la duda podríamos entenderte, al menos yo no entiendo básicmamente tu idea, da a pensar muchas cosas, simplifica un poco a ver que podemos hacer.
Saludos.
Bueno, Juanma 19, como me has dicho que tu al poner una interrupción en tu método "main()" dicha interrupción no se produce se confirman mis sospechas de que no tienes un punto en tu aplicación que llame a dicho método. Te explico con detalle: ;)
Cuando creas un objeto con algo como:
Private Objeto as ClaseObjeto = New ClaseObjeto()
En la creación de tu objeto se ejecuta el método "New()" no al método "main()" intenta haciendo el cambio al nombre del método para ver si te funciona. Y en caso de que no quieras que este método se llame al tiempo de crearlo entonces puedes dejar el nombre como "main()" o el nombre que quieras pero debes llmarlo en otra parte de tu código para que funcione. algo así como:
ObjetoTimer.main()
Casi me olvido: Borra la llmada al método main() que te indiqué al final de los "if" cuando apliques alguna de las soluciones porque eso te va traer problemas (creo yo).
Espero que te hay quedado claro y te sea de utilidad.