Últimos assuntos
» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

» Ajuda para mecanismo do jogo
por Willy Dom 16 Jul 2017, 15:54

Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220918 mensagens em 30411 assuntos

Ajuda com Mouse Enter/Leave

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Ajuda com Mouse Enter/Leave

Mensagem por chicoweb em Qua 26 Mar 2014, 11:12

To com um problema aqui que ta rachando a cuca e não achei solução, peço ajuda de vcs amigos:

Tenho um sistema de inventário básico:



1 - Ele cria via gml os slots, cada slot tem seu id, seu nome, preço, etc...

obj_control / Create


Código:
for (i = 0; i <= 4; i += 1){
    for (j = 0; j <= 6; j += 1){
        xx = 120 + (i * 32)
        yy = 120 + (j * 32)
        obj[i,j] = instance_create(xx,yy,obj_slot)
        obj[i,j].preco = random(2000)
    }
}

2 - Aí eu tenho um objeto que exibe a informação quando passa o mouse em cima de cada slot:

obj_item_descr / Draw


Código:
draw_set_halign(fa_center)
draw_sprite(sprite_index,0,x,y)
draw_set_color(c_white)
draw_text( x + (sprite_get_width(sprite_index) / 2), y + 4, texto)

3 - Aqui é o evento mouse_enter para cada slot lá do item (1)

obj_slot / Mouse Enter - Ele exibe o texto mostrando o preço do item


Código:
with obj_item_descr{
    instance_destroy()
}
instance_create(120 + (5 * 32),120,obj_item_descr)
obj_item_descr.texto = preco

4 - E o mouse leave:

obj_slot / Mouse Leave - Ele oculta o texto se estiver algum sendo exibido


Código:
//show_message("MOUSE LEAVE ID:" + string(id))
with obj_item_descr{
    instance_destroy()
}

Onde está a zica?

Acontece que ele executa primeiro o Mouse Enter do próximo slot, e depois o Mouse Leave do antigo.
Isso faz com que o passo 3 seja anulado com o passo 4.

Deu pra entender ai mais ou menos?
Alguem sabe como resolvo isso, por favor?
avatar
chicoweb

Ranking : Nota C
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Número de Mensagens : 666
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com Mouse Enter/Leave

Mensagem por fredcobain em Qua 26 Mar 2014, 14:09

E se o obj_item_descr estivesse sempre "vivo" e fosse visível somente quando o mouse estiver em colisão com um slot ? (use collision_point com mouse_x e mouse_y)

E no step desse obj_item_descr ele pegasse as informações do slot que está em colisão ?

Acho que seria uma lógica que não teria esse problema de ordem de eventos.
avatar
fredcobain

Ranking : Sem avaliações
Data de inscrição : 14/04/2011
Número de Mensagens : 691
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com Mouse Enter/Leave

Mensagem por chicoweb em Qua 26 Mar 2014, 16:13

fred Tentei fazer o que vc sugeriu, só que eu preferi usar o position_meeting do que o colision_point.

Coloquei isso no step do obj_slot


Código:
if position_meeting(mouse_x,mouse_y,self){
    with obj_item_descr{
        instance_destroy()
    }
    instance_create(120 + (5 * 32),120,obj_item_descr)
    obj_item_descr.texto = preco
}else{
    with obj_item_descr{
        instance_destroy()
    }
}

Só que como isso é executado para cada instancia do obj_slot os outros objetoda da room entendem que o else deles é que tá funcionando, assim anula tb o instance-create anterior.

Na verdade eu já resolvi o problema, mas foi uma gambiarra tão fácil e rápida que vai ser a solução definitiva kkkk

Solução:

No projeto inicial, dentro do obj_slot, eu coloquei um alarm0

E dentro desse alarm0 eu transferi o seguinte código que estava no mouse enter:

Código:
with obj_item_descr{
    instance_destroy()
}
instance_create(120 + (5 * 32),120,obj_item_descr)
obj_item_descr.texto = preco

e Dentro do mouse enter eu so coloquei isso:

Código:
alarm[0] = 1

kkkkk acredite funcionando perfeitamente, eu apenas dei um atraso para ele não pegar primeiro a função leave do objeto anterior.
avatar
chicoweb

Ranking : Nota C
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Número de Mensagens : 666
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com Mouse Enter/Leave

Mensagem por fredcobain em Qua 26 Mar 2014, 16:52

Nossa, gambiarra mesmo kkkk
Mas, como diz Maquiavel: "O fim justifica os meios"

Obs: Na minha sugestão não precisava criar e destruir os objetos, só mexer na visibilidade e no valor deles.
=)
avatar
fredcobain

Ranking : Sem avaliações
Data de inscrição : 14/04/2011
Número de Mensagens : 691
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com Mouse Enter/Leave

Mensagem por chicoweb em Qui 27 Mar 2014, 22:20

A gambiarra virou solução mesmo kkkk

Código:
Obs: Na minha sugestão não precisava criar e destruir os objetos, só mexer na visibilidade e no valor deles.
=)

Não pode fred, porque haveria momentos do game que apareceriam duas txt ao mesmo tempo, sei q isso é relativo no meu game aconteceria sim.
Por isso a necessidade de destruir e criar novamente, entendeu?

obs: tem um script q usa tanto para itens no chao quanto para itens no inventario, por isso quero uma uma coisa so t´ligado
avatar
chicoweb

Ranking : Nota C
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Número de Mensagens : 666
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Ajuda com Mouse Enter/Leave

Mensagem por Tanker GT em Qui 27 Mar 2014, 22:37

Você poderia fazer assim:

mouse enter:
infor=instance_create(120 + (5 * 32),120,obj_item_descr)
infor.texto = preco

mouse leave:
if instance_exists(infor)
{with(infor)
{instance_destroy()}}

Era isso que você queria?
avatar
Tanker GT

Ranking : Nota C
Notas recebidas : C
Data de inscrição : 08/10/2011
Número de Mensagens : 106
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum