como fazer uma troca de scripts usando a mesma tecla ???

 
   3D Game Builder - Índice » Programação
como fazer uma troca de scripts usando a mesma tecla ???
Autor Mensagem
yuri
Usuário
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 Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

No evento oncreate

Código:
const BACKSPACE=8;
 
SetWaitKeyUp(BACKSPACE);

WriteGlobalVar('alternar', false);


No evento mainloop

Código:
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 Exibir perfil de usuários
welgomes
Usuário
Usuário


Registrado: 10/07/11
Mensagens: 827
Localização: São Paulo - Capital

Segue o código do mainloop mais compacto:
Código:

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.
Código:

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.
Código:

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 Exibir perfil de usuários
yuri
Usuário
Usuário


Registrado: 07/07/14
Mensagens: 162
Localização: Santarem PA

Valeu cara... Laughing Laughing Laughing

_________________
Metallica

the unforgiven
Qua Out 01, 2014 11:27 pm Exibir perfil de usuários
   3D Game Builder - Índice » Programação
Página 1 de 1