Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





MOVER GRAFICOS

Iniciado por davidPT, 03 de Septiembre de 2006, 06:48:06 PM

« anterior - próximo »

davidPT

HE PROGRAMADO GRAFICOS EN OTROS LENGUAJES P.E. ENSAMBLADOR Y SE QUE HAY QUE HACER USO DE LAS MASCARAS PARA QUE NO SALGA EL CUADRADITO DEL DIBUJO PERO CON ESTA LIBRERIA NO SE COMO HACERLO.

OTRA DUDA ES COMO SOLUCIONAR EL PROBLEMA DE QUE ME DESAPARECE EL GRAFICO CUNDO LO MUEVO Y AL PULSAR OTRA VEZ APARECE Y VUELVE A DESAPARECER CREANDO UN DESAGRADABLE EFECTO PORQUE NO SE QUEDA EL GERAFICO EN PANTALLA.

MUCHAS GRACIAS

[EX3]

Wenas, lo primero si no es mucha molestia, te pediria que no escribieras en mayusculas ya que se hace algo incomodo leerte si no :)

Cita de: "davidPT"HE PROGRAMADO GRAFICOS EN OTROS LENGUAJES P.E. ENSAMBLADOR Y SE QUE HAY QUE HACER USO DE LAS MASCARAS PARA QUE NO SALGA EL CUADRADITO DEL DIBUJO PERO CON ESTA LIBRERIA NO SE COMO HACERLO.
Aqui usamos un valor denominado ColorKey que representa el valor del color que esta de fondo en la imagen. Si te fijas, en la funcion de carga MAP_Load() hay un parametro para indicar este valor. Al cargar el grafico con el Colorkey especificado este no se pintara cuando dibujes la imagen.

Cita de: "davidPT"OTRA DUDA ES COMO SOLUCIONAR EL PROBLEMA DE QUE ME DESAPARECE EL GRAFICO CUNDO LO MUEVO Y AL PULSAR OTRA VEZ APARECE Y VUELVE A DESAPARECER CREANDO UN DESAGRADABLE EFECTO PORQUE NO SE QUEDA EL GERAFICO EN PANTALLA.
A todos nos paso algo parecido la primera vez al dibujar con algo que no fuese con un control PictureBox o Image del VB 6.0 :lol: Como dx_lib32 borra la pantalla justo antes de pintar el siguiente frame en la pantalla, se deben realizar las llamadas de dibujo en cada vuelta del bucle. Lo que deberias hacer seria tener unas variables donde almacenar las coordenadas de posicion del dibujo que pasarias como parametro a la funcion de dibujo y a las que puedas manipular desde otra funcion o metodo. De esta forma siempre se vera la imagen. Un sencillo ejemplo:
Option Explicit

Dim m_GFX As New dx_GFX
Dim m_Input As New dx_Input

Dim Sprite As Long
Dim Posicion As Vertex
Dim Looping As Boolean

Private Sub Form_Load()
   Me.Show()

   Call m_GFX.Init(Me.Hwnd, 640, 480, 16, True, False, False, False, 60)
   Call m_Input.Init(Me.Hwnd)

   ' Cargamos un grafico que tiene como color de fondo el verde puro y se lo indicamos como ColorKey:
   Sprite = m_GFX.MAP_Load("player.bmp", m_GFX.ARGB_Set(255, 0, 255, 0)

   Looping = True

   Do While Looping
       If m_Input.Key(Key_Escape) Then
           Looping = False

       ElseIf m_Input.Key(Key_Left) Then
           Posicion.X = Posicion.X - 1
           
       ElseIf m_Input.Key(Key_Up) Then
           Posicion.Y = Posicion.Y - 1
           
       ElseIf m_Input.Key(Key_Right) Then
           Posicion.X = Posicion.X + 1
           
       ElseIf m_Input.Key(Key_Down) Then
           Posicion.Y = Posicion.Y + 1

       End If

       Call m_GFX.DRAW_Map(Sprite, Posicion.X, Posicion.Y, 0)

       Call m_GFX.Frame()

   Loop

   Call m_GFX.Terminate()
   Call m_Input.Terminate()

   End

End Sub

Private Sub Form_Unload(Cancel As Integer)
   Looping = False

End Sub

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.