Hola, estuve intentando que el PAK me lo extraiga en memoria... y despues teniendo el vector con la informacion del archivo que de la memoria me lo cargue a la variable long... pero no funca :S:S dejo el codigo:
Private System As dx_System_Class
Private Engine As dx_GFX_Class
Private Path As String
Private Imagen As Long
Private Lista() As PAK_FileInfo
Private Files() As Byte
Dim continuar As Boolean
Private Sub Command1_Click()
continuar = False
End Sub
Private Sub Form_Load()
Me.Show
Set Engine = New dx_GFX_Class
Set System = New dx_System_Class
Call Engine.Init(Me.hWnd, 800, 600, 0, True)
Path = "C:\Documents and Settings\Federico\Escritorio\Ejemp\graficos.pak"
Call System.PAK_Load(Path, Lista())
Call System.PAK_ExtractFileInMemory(Path, Lista(1), Files())
Imagen = Engine.MAP_LoadFromMemory(Files(), 0)
continuar = True
Do While continuar
Call Engine.DRAW_Map(Imagen, 300, 300, 0, 200, 200)
Engine.Frame
Loop
End
End Sub
puse apra q imprima en pantalla el grafico uno, q existe en el pak pero nose q pasa :S
EDIT: Estuve probando el cargar el grafico del pak en la memoria pero no funciona, me manda el error GFX_FILENOTLOAD... puede ser que alla escrito mal el codigo??
En principio el codigo esta bien. Acabo de modificar el tutorial 2 de dx_GFX para que cargue una textura desde un PAK y me ha funcionado:
Option Explicit
'Variable objeto que apunta a la clase dx_GFX:
Dim m_gfx As dx_GFX_Class
'Declaramos e inicializamos la variable objeto que apunta a la clase dx_System:
Dim m_System As New dx_System_Class
'Alamcena el valor del grafico en memoria:
Dim Sprite As Long
'Controla el bucle principal:
Dim Looping As Boolean
Private Sub Form_Load()
'Variables para cargar la textura en memoria:
Dim buffer() As Byte, list() As PAK_FileInfo
'Mostramos la ventana:
Me.Show
'Creamos la instancia de la clase dx_GFX:
Set m_gfx = New dx_GFX_Class
'Inicializamos la clase y el modo de video a 640x480 en modo ventana:
Call m_gfx.Init(Me.hWnd, 640, 480, , True)
'Cargamos la lista de archivos del paquete:
Call m_System.PAK_Load(App.Path & "\textures.pak", list())
'Cargamos en memoria el primer elemento de la lista:
Call m_System.PAK_ExtractFileInMemory(App.Path & "\textures.pak", list(0), buffer())
'Cargamos un grafico en memoria:
Sprite = m_gfx.MAP_LoadFromMemory(buffer(), 0)
Looping = True
Do While Looping
'Dibujamos el grafico en las coordenada 32x 32y con su tamaño original:
Call m_gfx.DRAW_Map(Sprite, 32, 32, 0, 0, 0)
'Ejecutamos las llamadas de la clase grafica:
Call m_gfx.Frame
Loop
'Descargamos el grafico de la memoria:
Call m_gfx.MAP_Unload(Sprite)
'Terminamos la ejecucion de la clase:
Call m_gfx.Terminate
'Destruimos la instancia de la clase:
Set m_gfx = Nothing
Set m_System = Nothing
End
End Sub
Private Sub Form_Unload(Cancel As Integer)
Looping = False
End Sub
Aun asi te comento que ya me ha pasado a veces de que tampoco me ha funcionado la funcion MAP_LoadFromMemory() y sin causa aparente.
Salu2...
probando con tu codigo me funciono, y me di cuenta que nada mas me funciona cuando las imagenes son PNG
Cita de: "kaeris"probando con tu codigo me funciono, y me di cuenta que nada mas me funciona cuando las imagenes son PNG
Pues en teoria deberia funcionar con cualquier formato, aunque bueno, el PNG es el mejor formato para trabajar segun mi opinion:
- Mejor compresion que un JPG
- Sin perdida de calidad, como si trabajaras con un BMP
- Soporta de canal Alpha para transparencias, que resulta mucho mejor que usar colorkey y dx_lib32 lo soporta a la perfeccion.
A decir verdad, las veces que a mi me funciono fue tambien usando PNG's segun recuerdo. Lo anoto por si surge el problema a otras personas en futuras ocasiones.
Salu2...
Cita de: "[EX3"]En principio el codigo esta bien. Acabo de modificar el tutorial 2 de dx_GFX para que cargue una textura desde un PAK y me ha funcionado:
Option Explicit
'Variable objeto que apunta a la clase dx_GFX:
Dim m_gfx As dx_GFX_Class
'Declaramos e inicializamos la variable objeto que apunta a la clase dx_System:
Dim m_System As New dx_System_Class
'Alamcena el valor del grafico en memoria:
Dim Sprite As Long
'Controla el bucle principal:
Dim Looping As Boolean
Private Sub Form_Load()
'Variables para cargar la textura en memoria:
Dim buffer() As Byte, list() As PAK_FileInfo
'Mostramos la ventana:
Me.Show
'Creamos la instancia de la clase dx_GFX:
Set m_gfx = New dx_GFX_Class
'Inicializamos la clase y el modo de video a 640x480 en modo ventana:
Call m_gfx.Init(Me.hWnd, 640, 480, , True)
'Cargamos la lista de archivos del paquete:
Call m_System.PAK_Load(App.Path & "\textures.pak", list())
'Cargamos en memoria el primer elemento de la lista:
Call m_System.PAK_ExtractFileInMemory(App.Path & "\textures.pak", list(0), buffer())
'Cargamos un grafico en memoria:
Sprite = m_gfx.MAP_LoadFromMemory(buffer(), 0)
Looping = True
Do While Looping
'Dibujamos el grafico en las coordenada 32x 32y con su tamaño original:
Call m_gfx.DRAW_Map(Sprite, 32, 32, 0, 0, 0)
'Ejecutamos las llamadas de la clase grafica:
Call m_gfx.Frame
Loop
'Descargamos el grafico de la memoria:
Call m_gfx.MAP_Unload(Sprite)
'Terminamos la ejecucion de la clase:
Call m_gfx.Terminate
'Destruimos la instancia de la clase:
Set m_gfx = Nothing
Set m_System = Nothing
End
End Sub
Private Sub Form_Unload(Cancel As Integer)
Looping = False
End Sub
Aun asi te comento que ya me ha pasado a veces de que tampoco me ha funcionado la funcion MAP_LoadFromMemory() y sin causa aparente.
Salu2...
Perdon por revivir post, pero aca hay algo que no me queda claro:
'Cargamos un grafico en memoria:
Sprite = m_gfx.MAP_LoadFromMemory(buffer(), 0)
Aca cargamos un grafico de la memoria (como bien dice la funcion), pero le estamos espesificando la variable (el array) de tipo byte donde estan alojados los graficos anteriormente cargados del .pak.
Pero, (disculpar por mi ignorancia), a que grafico nos estamos refiriendo aca?
Como hago para referirme a alguno en espesifico?
Gracias y saludos.
El array solo contiene un grafico, osea, la secuencia de bytes que componen fisicamente la imagen con toda su informacion de formato y demas datos.
Salu2...
Gracias por los datos.
Saludos
Cita de: "[EX3"]El array solo contiene un grafico, osea, la secuencia de bytes que componen fisicamente la imagen con toda su informacion de formato y demas datos.
Salu2...
Joya.
Pero, el hecho de agrupar los graficos en un .pak, es para que no se roben los graficos?
Pregunto esto, porque veo que se pueden descomprimir... con el pakexplorer por ejemplo, o otros similares.
Se agradece toda info que aporten.
Gracias y saludos.
Sencillamente es una manera de organizar los recursos de tu juego, graficos o no, en vez de tenerlos sueltos por archivos.
Salu2...
Gracias EX3, ahora me quedo bastante mas claro su utilidad... mejor dicho, totalmente claro.
Saludos y gracias.