|
|
|
Autor |
Mensagem |
Lemos
Usuário
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
Como habilitar e desabilitar um comando com a mesma tecla? |
|
Amigos
Nos scripts que estou fazendo, algumas variáveis precisam ser controladas por teclas então, usando o IsKeyPress, eu habilito elas com uma tecla, e com outra eu desabilito. Uso 2 teclas diferentes. Gostaria de simplificar fazendo a mesma coisa com apenas uma tecla, pressionando 1 vez habilitaria e pressionando ela de novo, desabilitaria.
Esse é um dos scripts que estou usando para para pausar o jogo com esse sistema de 2 teclas:
//---Begin Script Builder: Alterar a Variável Pausa em função de teclas P (play)=80 e S(Stop)=83) e exibir o estado no label---//
if (IsKeyPress(80))then
WriteGlobalVar('Pausa', 1);
if (IsKeyPress(83)) then
WriteGlobalVar('Pausa', 2);
SetLabelText('ON', IntToStr(ReadGlobalVar('Pausa')));
SetLabelText('Pontos', IntToStr(ReadGlobalVar('TiroRobo')));
//---End Script Builder---//
Abraço.
_________________ Lemos
http://alemdanimacao.zip.net/
|
|
Seg Ago 10, 2009 12:18 pm |
|
|
Lemos
Usuário
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
Re: Como habilitar e desabilitar um comando com a mesma tecl |
|
Amigos
Estou tentando uma série de scripts aqui e o que eu consegui algum resultado (funciona, mas não como eu queria) foi esse aqui:
//---Begin Script Builder: Alterar a Variável Pausa em função da tecla P=80 e mostrar o resultado no Label---//
if (IsKeyPress(80)) then
begin
if ReadGlobalVar('Pausa') = 2 then
begin
WriteGlobalVar('Pausa', 1);
SetWaitKeyUp(80);
SetKeyUpOK(true);
end
else if ReadGlobalVar('Pausa') = 1 then
begin
WriteGlobalVar('Pausa', 2);
SetWaitKeyUp(80);
SetKeyUpOK(true);
end
end;
SetLabelText('ON', IntToStr(ReadGlobalVar('Pausa')));
//---End Script Builder---//
O Problema é que quando clico na tecla 80, "P", o valor fica mudando o tempo todo, numa fração de segundo, de modo que tenho que tentar várias vezes até o valor mudar e ficar estável ali, do jeito que eu quero, ou 1 ou 2. Se eu seguro a tecla, os valores ficam alternanando sem parar!
Eu sei que os comandos SetWaitKeyUp(80); e SetKeyUpOK(true); seriam para evitar essa transição, mas eu acho que não estou usando corretamente, pque não tá funcionando, mas o script é verificado pelo programa e não contém erros. O que está faltando?
_________________ Lemos
http://alemdanimacao.zip.net/
|
|
Seg Ago 10, 2009 5:23 pm |
|
|
Lemos
Usuário
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
Re: Como habilitar e desabilitar um comando com a mesma tecl |
|
Acho que consegui com esse script, baseado no tutorial do diálogo no site, mas não consegui fazer com que o evento aconteça na primeira vez sem a tecla P seja pressionada DUAS vezes. Depois que você pressiona 2 x na primeira vez, a variável muda quantas vezes quisermos, teclando apenas 1x; não entendi onde inserir os conados SetWaitKeyUp(80); e SetKeyUpOK(true); para evitar que isso ocorra e baste teclar uma vez na tecla P para que ocorra a mudança na variável, como foi explicado no tutorial a que me referi:
//---Begin Script Builder: Alterar a Variável Pausa em função da tecla P=80 e mostrar o resultado no Label---//
if (IsKeyPress(80)) then
begin
if (ReadGlobalVar('Pausa') = 1) and ((GetWaitKeyIsUp)) then
begin
WriteGlobalVar('Pausa', 2);
end
else if (ReadGlobalVar('Pausa') = 2) and ((GetWaitKeyIsUp)) then
begin
WriteGlobalVar('Pausa', 1);
end;
SetWaitKeyUp(80);
end;
SetLabelText('ON', IntToStr(ReadGlobalVar('Pausa')));
//---End Script Builder---//
Só falta isso agora!
_________________ Lemos
http://alemdanimacao.zip.net/
|
|
Seg Ago 10, 2009 6:52 pm |
|
|
Edirlei
Administrador
Registrado: 15/03/08 Mensagens: 760
|
|
|
|
Usando:
SetWaitKeyUp(80);
SetKeyUpOK(true);
No OnCreate do mapa deve resolver o problema.
|
|
Seg Ago 10, 2009 9:19 pm |
|
|
Lemos
Usuário
Registrado: 14/04/09 Mensagens: 802 Localização: Rio de Janeiro - RJ |
|
|
|
| | Usando:
SetWaitKeyUp(80);
SetKeyUpOK(true);
No OnCreate do mapa deve resolver o problema. |
Coloquei esse script no mapa OnCreate, mas não mudou nada. Além disso, está acontecendo uma coisa estranha: nesse arquivo de testes tem um script padrão de contagem de tempo. Nele eu inseri uma condição que, para que a contagem continuasse normalmente, a variável Pausa teria que estar em 1. Quando usamos o sistema com a tecla P e ela muda para 2, o tempo pára. Se a tecla P for pressionada novamente, sem que esperemos muito tempo, ela volta para 1 e a contagem recomeça, mas se demorarmos muito tempo com a contagem parada, assim que clicamos em P e a variável volta para 1, o que liberaria a contagem, não acontece; ela fica parada um tempão, depois, da cabeça dela, recomeça, não é imediato. Isso é estranho, uma vez que a tecla muda a variável imediatamente e o script de contagem não tem nada a ver com a tecla P e sim com a variável Pausa. Se a variável mudasse para 1, que é o normal, a contagem deveria sempre recomeçar imediatamente, mas é o que eu disse, nem sempre acontece... Muito esquisito...
_________________ Lemos
http://alemdanimacao.zip.net/
|
|
Ter Ago 11, 2009 5:33 pm |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
Qua Out 01, 2014 12:36 am |
|
|
|
|
|
|
|
|