Saludos a toda la comunidad, hace poco encontre esta libreria y creo que me ha cido de gran ayuda ya que en estos momentos me encuentro haciendo un videojuego isometrico y apenas eh conseguido cargar imagenes en la pantalla y otras cosas. El problema es que cada vez que tengo un proyecto en pantalla completa cuando intento cerrarlo se queda la pantalla con los graficos que eh incertado (como si no lo hubiese cerrado) pero el programa deja de funcionar, quisiera que por favor me ayudaran a corregir el problema ya que eh mirado y no encuentro que puede ser. Eh aqui el codigo que maneje:
Option Explicit
Public DirectDraw As dx_GFX_Class
Public ImgPared1 As Long
Public Ciclo As Boolean
Private Sub Form_KeyPress(KeyAscii As Integer)
End
End Sub
Private Sub Form_Load()
Me.Show
Set DirectDraw = New dx_GFX_Class
Call DirectDraw.Init(Me.hWnd, 1024, 768, , False)
ImgPared1 = DirectDraw.MAP_Load("Pared1.png", 0)
Ciclo = True
While Ciclo
Call DirectDraw.DRAW_AdvMap(ImgPared1, 288, 160, 0, 50, 50, Blendop_Color, &HFFFFFFFF, Mirror_None, Filter_Bilinear, Isometric_Base)
Call DirectDraw.Frame(DirectDraw.ARGB_Set(0, 0, 0, 0))
Wend
Call DirectDraw.MAP_Unload(ImgPared1)
Call DirectDraw.Terminate
Set DirectDraw = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
Ciclo = False
End Sub
Wenas.
Lo primero un apunte. La instruccion End de Visual Basic no invoca ningun evento en los controles y objetos que tengas en ejecucion, por lo que el siguiente codigo:
Private Sub Form_KeyPress(KeyAscii As Integer)
End
End Sub
Cambiaria la llamada a End por Ciclo = False. End lo llamaria justo al final del programa despues de cerrar todos los objetos, en este caso al final del evento Load del formulario. Yo dejaria el codigo asi:
Option Explicit
Public DirectDraw As dx_GFX_Class
Public ImgPared1 As Long
Public Ciclo As Boolean
Private Sub Form_KeyPress(KeyAscii As Integer)
Ciclo = False
End Sub
Private Sub Form_Load()
Me.Show
Set DirectDraw = New dx_GFX_Class
Call DirectDraw.Init(Me.hWnd, 1024, 768, , False)
ImgPared1 = DirectDraw.MAP_Load("Pared1.png", 0)
Ciclo = True
While Ciclo
Call DirectDraw.DRAW_AdvMap(ImgPared1, 288, 160, 0, 50, 50, Blendop_Color, &HFFFFFFFF, Mirror_None, Filter_Bilinear, Isometric_Base)
Call DirectDraw.Frame()
Wend
Call DirectDraw.MAP_Unload(ImgPared1)
Call DirectDraw.Terminate
Set DirectDraw = Nothing
End
End Sub
Cerrando previamente el objeto grafico no deberia darte problemas al cerrar en modo a pantalla completa.
Salu2...
P.D.: Por cierto, solo por evitar confusiones, la clase grafica de dx_lib32 funciona sobre Direct3D y no sobre DirectDraw (DirectDraw solo lo usa en la version actual para lectura de valores de memoria). Lo digo mas que nada por como has llamado a la instancia en tu codigo :)
Vaya era una tonteria :D
Si no me hubieras colaborado compañero tal vez no lo hubiera conseguido solucionar.
Muchas gracias y tendre muy en cuenta tus sugerencias . 8)
Ahora por otro lado el juego que estoy haciendo maneja sprites isometricos y no tengo idea como manejar las coliciones. No se si sabrian donde puedo conseguir un tutorial o ejemplo donde manejen ese tipo de imagenes.
Cita de: "Halcon07"Ahora por otro lado el juego que estoy haciendo maneja sprites isometricos y no tengo idea como manejar las coliciones. No se si sabrian donde puedo conseguir un tutorial o ejemplo donde manejen ese tipo de imagenes.
Ahi ni idea ya que nunca he implementado un motor isometrico a excepcion de la funcion de dibujo en perspectiva de dx_lib32. Eso preguntalo en el foro de programacion general, que mas gente te leera y que seguro alguien sabra decirte paginas con tutoriales o articulos sobre desarrollos de motores isometricos y como calcular la colision aunque imagino que sera parecido a como se calcularia en perspectiva ortogonal :)
Salu2...