Uma janela da frente da room que só ela tenha o foco

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

Uma janela da frente da room que só ela tenha o foco

Mensagem por Mauricio em Dom 08 Abr 2012, 02:11

Olá pessoal!

Estou fazendo uma espécie de aplicativo com o GM, e gostaria muito de saber se há como fazer isso:

- Tenho uma room com vários botões que executam várias funções. Um botão desses abre uma janela de configuração.
- Essa janela surge e fica na frente de todo o resto, pegando o "foco" da aplicação. Ou seja, quero que só os botões dessa janela sejam utilizados, todos os botões atrás sejam ignorados.

- Eu imaginava que se colocasse um objeto com um depth menor que outro (tapando ele) o de trás seria ignorado em eventos de clique, mouse enter, etc. Mas na realidade tudo funciona...

- Não quero fazer essa janela em outro room pois tenho uma grande quantidade de coisas carregadas no room atual que daria trabalho restaurar o estado antigo na mão, quando retornar para room original.

- Posso criar variáveis de controle para quando essa janela estiver sobre tudo e com isso ignorar as ações dos botões atrás, mas será que não tem outra forma mais prática? Alguma mutreta com views, etc?

- Outra forma é usar o instance_deactivate_all logo antes de chamar a janela. Porém no help isso diz que pode dar problemas, usar com cuidado, e faz tudo desaparecer. Gostaria que essa janela ficasse no meio da tela com o fundo ainda visível, penso só em dar uma escurecida (um plano preto semitransparente) para ficar claro que o foco está na frente.

Sugestões?

Obrigado, boa páscoa!

Mauricio

Número de Mensagens : 114
Data de inscrição : 13/06/2008
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   :

http://mbg3dmind.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por PedroX em Dom 08 Abr 2012, 03:03

Você poderia fazer o seguinte:

- Criar uma ds_list.
- Adicionar os elementos de acordo com o depth na posição inicial ou final da lista.
- Ordenar o depth de acordo com os valores da lista. (ds_list_sort ordena a lista, o depth pode ser por loop mesmo)
- Ao clicar, verificar se o elemento está na posição inicial ou final da lista (qual você escolheu acima), se estiver, a ação ocorre.

Obs: essa é uma ideia, se tiver alguma dúvida ou precisar de um exemplo, responde aí.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por GameMakerTutoriais em Dom 08 Abr 2012, 16:17

Amigo, eu fiz um negócio desses parecido uma vez. O jeito que eu fiz foi colocar uma variável "form_focused" em cada objeto. Quando um form vinha à frente, a variável dessa instância era "true" e das demais "false".

with (all) form_focused := false;
form_focused := true;

Os eventos de clique e teclado eram todos conferidos no step, então eu só coloquei no início dele:

if form_focused = false then exit;

Daí os eventos de quem não é foco não executam, mas foi fácil adaptar porque coloquei tudo no step. Se quiser dar uma olhada, tá tudo aberto, o código cê pode pegar, modificar, olhar, se servir de alguma coisa:

http://gmbr.forumeiros.com/t17196-minilab-ose-project

@Pedro

Agora que eu reparei isso Pedro, meu projeto tá no Hall, mas o concurso de softs foi anulado, lembra? Eu fui pesquisar e vi isso agora.

Falou!

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por Mauricio em Seg 09 Abr 2012, 01:16

Esse sistema de uma var de controle é o que tinha pensado mesmo, mas a dica do with (all) ajuda bastante!

Vou ter um pouco mais de trabalho para testar pois em alguns casos misturo código com outras partes de ações drag and drop, então só usar "if form_focused = false then exit;" não seria suficiente, vou ter que fazer um bloco de teste entre tudo que existe em cada evento. Mas é tranquilo.


Valeu!

Mauricio

Número de Mensagens : 114
Data de inscrição : 13/06/2008
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   :

http://mbg3dmind.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por GameMakerTutoriais em Seg 09 Abr 2012, 12:30

Se houvesse alguma forma de saltar um evento inteiro, tipo a action "Exit Event", daria pra fazer uma mudança por código, tudo de uma vez... Mas não sei como fazer isso ou se realmente tem jeito... Boa sorte aí.

GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por Kabeção em Seg 09 Abr 2012, 14:13

Nesse caso é só colocar um if em drag e drop com o "Exit event" se form_focused = false for falso.
Ou você usa o with para executar os códigos só no objeto focado.

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por Mauricio em Seg 09 Abr 2012, 14:37

Boa, nunca tinha usado a ação "exit event", facilita mais ainda!

Assunto resolvido, valeu pessoal.

Mauricio

Número de Mensagens : 114
Data de inscrição : 13/06/2008
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   :

http://mbg3dmind.wordpress.com/

Voltar ao Topo Ir em baixo

Re: Uma janela da frente da room que só ela tenha o foco

Mensagem por Conteúdo patrocinado Hoje à(s) 18:08


Conteúdo patrocinado


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