Controlando o Tempo e a execução com o Lingo
Mudar a Velocidade (FPS)
Use este script para ajustar o tempo ou a velocidade em 15 frames por segundo:
on exitFrame
puppetTempo 15
end
Criando uma pausa
O script abaixo mostra uma forma de fazer uma pausa de 2 segundos. No Director , vários comandos usam o tempo na forma de ticks , onde 60 ticks equivale a 1 segundo.
on exitFrame
delay 2*60
end
O problema em usar um script com o comando delay é que ele trava completamente o execução de outros comandos durante o tempo indicado (no caso 2 segundos), interferindo com a interatividade.
Existem formas melhores de fazer uma pausa. Uma delas é usar um loop com Repeat . Isto é melhor que usar o delay. Mas também tem algumas consequencias. Eventos como mousedown ou Keydown são bloqueados..
on enterFrame
startTimer — inicializa o “relógio” do Director (zera o tempo)
repeat while the timer < 2*60
updateStage
end repeat
end
Talvez a melhor opção é conferir a todo instante, dentro de um exitframe, por exemplo , o tempo que se passou. Este tempo é armazenado em uma váriavel global ou propriedade logo no inicio da execução e depois a todo instante usa-se um comando “if” para determinar se já atingiu o tempo determinado.
Para medir o tempo pode-se usar uma propriedade do Director chamada de “milliseconds”
– cria-se uma váriavel para armazenar o tempo incial.
property tempo_inicial
on beginSprite
tempo_inicial = the milliseconds
end
on exitFrame
if (tempo_inicial – the milliseconds) < 2*1000 then go to the frame
end
Aguardar cliques do mouse ou teclas pressionadas
on exitFrame
— imita um cursor piscante
cursor 282 + (the timer/45)mod 2
go the frame
end
on mouseDown
— volta o cursos para uma “setinha”
cursor -1
— avança para o próximo frame
go the frame + 1
end
on keyDown
— muda o cursor para uma “setinha”
cursor -1
— avança para o próximo frame
go the frame + 1
end
Aguardar o fim do som no canal X
Colocando o script seguinte em um frame irá fazer o Director ficar rodando o frame corrente até que o som chegue ao fim. Você pode usar isto para aguardar o fim de uma locução ou de uma música.
on exitFrame
— repete o frame enquanto o som estiver tocando
if soundBusy(X) then go the frame
end
Onde X é o número do canal onde está o som (normalmente 1 ou 2).
No Director MX 2004, ou na versão 11 , o comando é um pouco diferente:
on exitFrame
if sound(X).isBusy() then go the frame
end
Trabalhando com Cue Point(s)
Cue points são um recurso útil para sincronizar som , vídeos e animações. Você pode inserir CuePoints nos arquivos de audio e vídeo usando diversos tipos de softwares de edição de som e vídeo, incluindo SoundEdit e Premiere.
Funciona assim: você usa um programa de edição para adicionar os CuePoints para marcar exatamente os tempos do som ou do vídeo, salva este arquivo e depois pode usar comandos do Adobe Director para controlar as ações que acontecem baseadas nestes pontos que foram marcados no video ou no som.
Comandos e propriedades do Director para usar Cue Points
on cuePassed - executa um comando assim que detectar um Cuepoint.
Exemplo:
on cuePassed canal, numero, nome
if nome = “CuePoint1″ then
alert nome && “atingido”
end if
end
mostRecentCuePoint – identifica o cuepoint mais recente. Só pode ser usado com sprites.
on testCue
theCue = sprite(1).mostRecentCuePoint
if theCue = 1 then
alert “Cue 1 acabou de passar!”
end if
end
isPastCuePoint(whichSpriteOrSound, cuePointID) – retorna o numero de vezes que um Cuepoint foi atingido durante um loop.
on exitFrame
if isPastCuePoint(1, “ponto 3″) then
alert “passou o ponto 3″
end if
end
cuePointTimes of member – retorna uma lista com o tempo em milisegundos de todos os Cuepoints existentes em um elemento (member) do Director.
Exemplo:
put the cuePointTimes of member “apresentaçao”
– [0, 4231, 6875, 12985, 18391, 21003]
cuePointNames of member
- retorna uma lista com os nomes de todos os CuePoints do membro especificado:
put the cuePointNames of member “apresentação”
– [evolução, fabricação, distribuição, vendas]
Aguardar fim de um Digital Video no canal X
O script abaixo irá fazer um loop enquanto o tempo do vídeo no canal X for menor que a duração do membro Y.
Você pode usar este script para fazer o video ficar rodando em um frame até chegar ao final, dai continuar a próxima etapa:
on exitFrame
if sprite(X).movieTime < member(Y).duration then \
go the frame
end
Em alguns casos de vídeos com a opção “Direct To Stage”, usada em digital vídeo, poderá ser necessário limpar a tela uma vez que o vídeo terminar de ser executado . Para isso você poderá usar um dos 2 scripts seguintes:
on exitFrame
if sprite(X).movieTime < member(Y).duration then
go the frame
else
— fazer o sprite com o video invisivel
sprite(X).visible = 0
end if
end
ou então:
on exitFrame
if sprite(X).movieTime < member(Y).duration then
go the frame
else
— use uma transição para forçar o Director a redesenhar a tela.
puppetTransition 23
end if
end