Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Animacion

Iniciado por SuBSiBer, 28 de Agosto de 2007, 01:07:28 AM

« anterior - próximo »

SuBSiBer

Hola muy buenas con todos los mienbros del foro y en especial de esta zona referida ala libreria  tan pero tan genial q encontre weno al grano con la duda q tengo es saber si se puede aser animaciones con varios graficos o sea tengo 20 imagenes image1,image2..............image20

y  no se  com implentarlos no se si talves pordrian ayudarme
gracias de antemano :)

[EX3]

Puedes hacer animaciones con graficos sueltos o dibujando regiones de un mismo grafico (MAP_SetRegion()). Sencillamente se trata de tener una lista indicando que graficos componen la animacion y recorrerlo uno por uno cada x intervalo de tiempo:
Funcion DibujarAnimacion()
   Si Tiempo >= Intervalo Entonces
       i = i + 1
       Si i > 5 Entonces i = 0
       Dibujar(grafico(i))
   Fin Si
   Tiempo = TiempoActual()
Fin Funcion

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

SuBSiBer

weno perdona por no responder  ni  probar  el codigo que me pasates es que taba liado con mi examenes
bueno tengo el siguiente problema


Option Explicit
Dim m_gfx As dx_GFX_Class
Public fondo As Long
Public tanque(19) As Long
Public numtan As Integer
Dim Looping As Boolean

Private Sub animator_Timer()
numtan = numtan + 1
If numtan >= 19 Then
numtan = 0
End If
End Sub

Private Sub Form_Load()
'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 un grafico en memoria:
Sprite = m_gfx.MAP_Load(App.Path & "\Texture.png", 0)
tanque(1) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_000.png", 255)
tanque(2) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_001.png", 255)
tanque(3) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_002.png", 255)
tanque(4) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_003.png", 255)
tanque(5) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_004.png", 255)
tanque(6) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_005.png", 255)
tanque(7) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_006.png", 255)
tanque(8) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_007.png", 255)
tanque(9) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_008.png", 255)
tanque(10) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_009.png", 255)
tanque(11) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_010.png", 255)
tanque(12) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_011.png", 255)
tanque(13) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_012.png", 255)
tanque(14) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_013.png", 255)
tanque(15) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_014.png", 255)
tanque(16) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_015.png", 255)
tanque(17) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_016.png", 255)
tanque(18) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_017.png", 255)
tanque(19) = m_gfx.MAP_Load(App.Path & "\tanque\big_emo_000_018.png", 255)

Looping = True

Do While Looping
   Call m_gfx.DRAW_Map(Sprite, 0, 0, 0, 0, 0)
 
   
   Call m_gfx.DRAW_Map(tanque(numtan), 0, 0, 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(tanque(19))

'Terminamos la ejecucion de la clase:
Call m_gfx.Terminate

'Destruimos la instancia de la clase:
Set m_gfx = Nothing

End

End Sub

Private Sub Form_Unload(Cancel As Integer)
Looping = False

End Sub


pues el error que tengo es  que la animacion se desarrola con normalidad  pero al  terminar todo el array de imagenes que almacene anteriormente deberia volver a  animar pero justo al final  termina imagen 19 y entra sprite para continuar  de nuevo  no se por que se debe esto si podrias ayudarme a ver donde esta el errorseria de mucha ayuda

[EX3]

Pues a simple vista lo unico que veo mal son 3 cosas: la llamada cuando intentas liberar la memoria descargando los graficos del tanque:
Call m_gfx.MAP_Unload(tanque(19))
Si quieres descargarlos todos tienes que descargarlos uno a uno, ahi solo estas descargando el sprite 19 del array, el segundo que veo es que asignas incorrectamente el colorkey a los sprites. 255 no es rojo en formato ARGB, que esl formato que se usa en la libreria, para ello usa las funciones de color que ofrece la clase grafica (y si los PNG tienen transparencia no has de indicar colorkey alguno) y el ultimo que veo que empiezas a usar el array por el elemento 1 cuando el primer elemento siempre es el 0 (a no ser que declares la cabecera Option Base 1)

Sobre lo de la animacion no he visto ningun error, el codigo del evento timer esta correcto salvo que yo cambiaria la expresion de condicion por:
If numtan > 19 Then
Ya que de lo contrario, con el operador >=, el ultimo fotograma jamas te lo mostrara. Por lo demas he hecho una prueba con tu codigo y me ha funcionado sin problemas reproduciendo la secuencia completa de forma continua.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.