Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - divmas

#16
Proyecto dx_lib32 / Re: mover un objeto
08 de Marzo de 2011, 06:59:16 PM
La ruta de la fuente y del mapa las encuentra bien porque tengo los archivos en el mismo directorio si bien deberia anteponerle el app.path (en vb .net-> Application.StartupPath).

La zona de impacto se crea cuando se posiciona haciendo una llamada al método:

Código (vbnet) [Seleccionar]
Public Sub posicionar(ByVal x As Long, ByVal y As Long)
        top = y : left = x
        nueva_zona_impacto()
    End Sub


Código (vbnet) [Seleccionar]

    Private Sub nueva_zona_impacto()
        rec_zona_impacto.X = left : rec_zona_impacto.Y = top
        rec_zona_impacto.Width = 30 : rec_zona_impacto.Height = 30
    End Sub


y se actualiza cuando se dibuja y se clica y pulsa a la vez:

Código (vbnet) [Seleccionar]
Public Sub draw(ByVal texto As String)
        m_gfx.DRAW_Map(gfx_ficha, left, top, -8, 0, 0)
        m_gfx.DRAW_Text(fnt_system1, texto, left, top + 35, -8, m_gfx.ARGB_Set(255, 0, 0, 0), Text_Align.Align_Left)

        'update

        If m_system.MATH_PointInRect(m_input.Mouse.X, m_input.Mouse.Y, rec_zona_impacto) Then

            Cursor.Current = Cursors.Hand

            If HitEvent.Mouse_Hit(Mouse_Button.Left_Button) And m_input.Mouse_Press = 1 Then

                left = m_input.Mouse.X
                top = m_input.Mouse.Y
                m_gfx.DRAW_Map(gfx_ficha, left, top, -8, 0, 0)
                m_gfx.DRAW_Text(fnt_system1, texto, left, top + 35, -8, m_gfx.ARGB_Set(255, 0, 0, 0), Text_Align.Align_Left)
                nueva_zona_impacto()
            End If

        End If

    End Sub



por otra parte no entiendo eso que dices de hacer la clase lo más autonoma posible si las variables las tengo declaradas dentro de la propia clase...

Gracias
#17
Proyecto dx_lib32 / mover un objeto
08 de Marzo de 2011, 06:06:29 PM
Buenas,

estoy tratando de hacer una clase que me permita mover un objeto que está compuesto por una imagen y un texto.

Ésta es la clase que tengo hecha que entiendo tiene lógica pero que no realiza bien lo que quiero:

Código (vbnet) [Seleccionar]
Public Class ficha

    Private top As Long, left As Long
    Private texto As String
    Private rec_zona_impacto As GFX_Rect
    Private fnt_system1 As Long
    Private gfx_ficha As Long

    Public Sub New()
        fnt_system1 = m_gfx.FONT_LoadSystemFontFromFile("fonts\proman10.ttf", "proman", 8, False, False, False, False)
        gfx_ficha = m_gfx.MAP_Load("img\ficha.png", 0)
    End Sub

    Public Sub posicionar(ByVal x As Long, ByVal y As Long)
        top = y : left = x
        nueva_zona_impacto()
    End Sub

    Public Sub draw(ByVal texto As String)
        m_gfx.DRAW_Map(gfx_ficha, left, top, -8, 0, 0)
        m_gfx.DRAW_Text(fnt_system1, texto, left, top + 35, -8, m_gfx.ARGB_Set(255, 0, 0, 0), Text_Align.Align_Left)

        'update

        If m_system.MATH_PointInRect(m_input.Mouse.X, m_input.Mouse.Y, rec_zona_impacto) Then

            Cursor.Current = Cursors.Hand

            If HitEvent.Mouse_Hit(Mouse_Button.Left_Button) And m_input.Mouse_Press = 1 Then

                left = m_input.Mouse.X
                top = m_input.Mouse.Y
                m_gfx.DRAW_Map(gfx_ficha, left, top, -8, 0, 0)
                m_gfx.DRAW_Text(fnt_system1, texto, left, top + 35, -8, m_gfx.ARGB_Set(255, 0, 0, 0), Text_Align.Align_Left)
                nueva_zona_impacto()

            End If

        End If

    End Sub
    Private Sub nueva_zona_impacto()
        rec_zona_impacto.X = left : rec_zona_impacto.Y = top
        rec_zona_impacto.Width = 30 : rec_zona_impacto.Height = 30
    End Sub
    Protected Overrides Sub Finalize()
        MyBase.Finalize()

        m_gfx.FONT_UnloadSystemFont(fnt_system1)
        m_gfx.MAP_Unload(gfx_ficha)

    End Sub



End Class


Alguien podria ayudarme a encontrar donde fallo.

Gracias
#18
Proyecto dx_lib32 / Re: botones, timer...
07 de Marzo de 2011, 06:39:02 PM

Muchísimas gracias EX3 por las molestias y poner a disposición esa clase. Funciona perfectamente.
Has hecho un grandisimo trabajo con esta libreria.

Gracias igualmente a Hechelion y Ubermann por intentar ayudarme.

Un saludo.
#19
Proyecto dx_lib32 / Re: botones, timer...
06 de Marzo de 2011, 07:06:05 PM
Ese codigo si funciona sin duda en un "código normal" pero en el mio harto complejo todo se dificulta mucho al tener muchos objetos y tener que pasarle parametros, etc...

Ando buscando esa clase que EX3 hizo un dia para resolver el bug de los hit.... Gameeventhitclass.cls  creo que se llamaba o bien una solucion rapida... sin tener que recurrir al timer... es decir lo que propusieron EX3 y Hexelion pero con más detalle porque como ellos me dijeron no anda.

Muchas gracias por la molestia que te has tomado pero voy buscando el otro camino que explicaron ellos dos y estoy desesperado porque me hace mucha falta tenerlo.
#20
Proyecto dx_lib32 / Re: botones, timer...
06 de Marzo de 2011, 04:06:48 PM
En el timer puedo controlar cuando se clica pero no "donde" se clica... dentro del boton tengo la zona de impacto...  se podria llegar a hacer lo que dices calculando la zona de impacto en el mismo timer pero tengo muchos "botones"...

Gracias por tu sugerencia de todos modos
#21
Proyecto dx_lib32 / Re: botones, timer...
06 de Marzo de 2011, 02:47:49 AM
Primero de todo gracias a los dos por la rápida respuesta, pero sigo sin dar en el clavo... os explico:

tengo en el principal:

Código (vbnet) [Seleccionar]


do

estado=m_input.Mouse_Press

loop

sub click_izquierdo
...
end sub



en la clase boton cuando detecto la zona de impacto:

Código (vbnet) [Seleccionar]


If estado = 0 And m_input.Mouse_Press = Mouse_Button.Left_Button Then

    RaiseEvent click_izquierdo()

End If




esto seria según me habeis dicho...    pero no funciona...

que hago mal?

Gracias
#22
Proyecto dx_lib32 / Re: botones, timer...
05 de Marzo de 2011, 07:24:22 PM
si, mira dentro del loop cargo los botones que a su vez tienen eventos (al hacer click) pero claro como cada boton tiene un evento distinto lo he de declarar en el form_load

Do
   cargo botones con el adreesof correspondiente
Loop

sub botonizquierdoclick
evento
end sub

pero no responde bien a los clicks... a veces si a veces no...

si estuviera dentro de un timer los clicks se harian bien por lo que he podido comprobar pero no puede meter el sub botonizquierdoclick dentro del timer como es logico por lo tanto que debo hacer?

Gracias
#23
Proyecto dx_lib32 / botones, timer...
05 de Marzo de 2011, 06:23:54 PM
Muy buenas,

antes de nada felicitar a EX3 por esta gran libreria.

Os explico mi problema. Estoy desarrolando una aplicación en vb .net, tengo una clase boton que detecta los hits del raton y llama:

    Public Event click_derecho()
    Public Event click_izquierdo()

pues bien, en el form principal es donde defino los eventos cuando se clica pero me he encontrado con el problema (despues de leer varios mensajes) que si no es con un timer los clicks no los detecta correctamente.

Entonces mi pregunta es:

como hago para enlazar esa clase boton con el timer para que los hits los detecte correctamente.

No sé si me he explicado bien.

Gracias de antemano