|
|
|
Autor |
Mensagem |
yuri
Usuário
Registrado: 07/07/14 Mensagens: 162 Localização: Santarem PA |
|
como fazer uma troca de scripts usando a mesma tecla ??? |
|
Tipo e assim o eu aperto backspace e o cara fica em crstand mais quando ele andar vai exibir a animacao crwalk
dai se aperta backspace de no ele volta a ficar em stand mais se quiser ele pode voltar para crstand...
_________________ Metallica
the unforgiven |
|
Ter Set 30, 2014 11:09 pm |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
|
No evento oncreate
| | const BACKSPACE=8;
SetWaitKeyUp(BACKSPACE);
WriteGlobalVar('alternar', false);
|
No evento mainloop
| | const BACKSPACE=8;
var alternar : boolean;
if IsKeyPress(BACKSPACE) and GetWaitKeyIsUp then
begin
alternar := ReadGlobalVar('alternar');
if(alternar) then
begin
SetLabelText('label0', 'Instruções do bloco A');
end
else
begin
SetLabelText('label0', 'Instruções do bloco B');
end;
WriteGlobalVar('alternar', not alternar);
SetWaitKeyUp(BACKSPACE);
end;
|
|
|
Qua Out 01, 2014 12:33 am |
|
|
welgomes
Usuário
Registrado: 10/07/11 Mensagens: 827 Localização: São Paulo - Capital |
|
|
|
Segue o código do mainloop mais compacto:
| |
const BACKSPACE=8;
if IsKeyPress(BACKSPACE) and GetWaitKeyIsUp then
begin
if ReadGlobalVar('alternar') then
begin
SetLabelText('label0', 'Instruções do bloco A');
end
else
begin
SetLabelText('label0', 'Instruções do bloco B');
end;
WriteGlobalVar('alternar', not alternar);
SetWaitKeyUp(BACKSPACE);
end;
|
Uma breve explicação sobre SetWaitKeyUp(CODIGO_DE_TECLA) e GetWaitKeyIsUp.
O evento MainLoop ocorre muito rápido.
No simples apertar de tecla o seu script pode rodar várias vezes.
Não é isso que queremos.
Queremos que quando se aperte uma tecla o script rode uma única vez.
Lembrando que uma instrução de controle de fluxo "if" somente executa o primeiro bloco, caso a expressão retorne true (verdadeiro/sim).
Primeiro damos a instrução SetWaitKeyUp( 8 ), algo como "Espere a tecla backspace ser solta", ou qualquer outro código de tecla.
Enquanto a tecla não for solta a instrução GetWaitKeyIsUp, algo como "A tecla que eu mandei esperar foi solta?" irá retorna false (falso/não).
Deste modo a expressão é processada da seguinte forma enquanto o usuário está segurando a tecla.
| |
IsKeyPress(8) and GetWaitKeyIsUp
true and false
false
|
Como vemos enquanto o usuário segurar a tecla backspace o bloco "if" não será executado, ou seja, o MainLoop irá passar várias vezes pelo bloco sem executá-lo.
Agora vamos ver como a expressão é processada quando o usuário solta a tecla.
| |
IsKeyPress(8) and GetWaitKeyIsUp
true and true
true
|
Como vemos quando o usuário solta a tecla backspace o bloco "if" será executado, pois temos um true.
|
|
Qua Out 01, 2014 11:27 am |
|
|
yuri
Usuário
Registrado: 07/07/14 Mensagens: 162 Localização: Santarem PA |
|
|
|
Valeu cara...
_________________ Metallica
the unforgiven |
|
Qua Out 01, 2014 11:27 pm |
|
|
|
|
|
|
|
|