Panda3D/Manual/Intervalos: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Criou nova página com 'O sistema de intervalos do Panda3D é um mecanismo sofisticado para tocar ações configuradas. COm o uso de intervalor, você pode construir uma rede complexa de animaçõe...'
 
Sem resumo de edição
Linha 1: Linha 1:
O sistema de intervalos do Panda3D é um mecanismo sofisticado para tocar ações configuradas. COm o uso de intervalor, você pode construir uma rede complexa de animações, efeitos de som, ou qualquer outra ação, e rodar o script em demanda
O sistema de intervalos do Panda3D é um mecanismo sofisticado para tocar ações configuradas. Com o uso de intervalor, você pode construir uma rede complexa de animações, efeitos de som, ou qualquer outra ação, e rodar o script em demanda


O núcleo do sistema é a classe intervalo. Ali existem diversos tipos de intervalos, que serão discutidos em detalhes nas próximas páginas, mas todos eles têm em comum a seguinte propriedade: cada intervalo representa uma ação (ou série de ações) que ocorrem em um intervalo de tempo finito e especifico(por isso o nome).
O núcleo do sistema é a classe intervalo. Ali existem diversos tipos de intervalos, que serão discutidos em detalhes nas próximas páginas, mas todos eles têm em comum a seguinte propriedade: cada intervalo representa uma ação (ou série de ações) que ocorrem em um intervalo de tempo finito e especifico(por isso o nome).
Linha 7: Linha 7:
Em qualquer módulo Panda3D que usa intervalos, você precisa primeiro importar o módulo de intervalo:
Em qualquer módulo Panda3D que usa intervalos, você precisa primeiro importar o módulo de intervalo:


from direct.interval.IntervalGlobal import *
from direct.interval.IntervalGlobal import *


Existem vários métodos úteis, os quais todos intervalos têm em comum.
Existem vários métodos úteis, os quais todos intervalos têm em comum.
Linha 13: Linha 13:
Para começar a rodar um intervalo, use um dos seguintes:
Para começar a rodar um intervalo, use um dos seguintes:


interval.start()
interval.start()
interval.start(startT, endT, playRate)
interval.start(startT, endT, playRate)
interval.loop()
interval.loop()
interval.loop(startT, endT, playRate)
interval.loop(startT, endT, playRate)


Os três parâmetros são opcionais. Os parametros startTime e endTime definem o subset do intervalo á tocar; esse tempo deve ser dado em segundos, medidos do começo do intervalo. O playRate, como especificado, permite que você rode o intervalo mais rapido ou mais lento que o tempo real; o valor padrão é 1.0, para rodar em tempo real.
Os três parâmetros são opcionais. Os parametros startTime e endTime definem o subset do intervalo á tocar; esse tempo deve ser dado em segundos, medidos do começo do intervalo. O playRate, como especificado, permite que você rode o intervalo mais rapido ou mais lento que o tempo real; o valor padrão é 1.0, para rodar em tempo real.
Linha 22: Linha 22:
Normalmente, um intervalo tocará até o fim e terminará á si mesmo, mas você pode parar a execução do intervalo prematuramente:
Normalmente, um intervalo tocará até o fim e terminará á si mesmo, mas você pode parar a execução do intervalo prematuramente:


interval.finish()
interval.finish()


Isso terminará o intervalo e moverá o seu estado para o estado final, como se ele tivesse tocado até o fim. Esse é um ponto muito importante, e ele permite que você defina ações de limpeza críticas dentro do próprio internvalo, que garantidamente foram executadas no momento que o intervalo termina.
Isso terminará o intervalo e moverá o seu estado para o estado final, como se ele tivesse tocado até o fim. Esse é um ponto muito importante, e ele permite que você defina ações de limpeza críticas dentro do próprio internvalo, que garantidamente foram executadas no momento que o intervalo termina.
Linha 28: Linha 28:
Você pode também temporariamente pausar e resumir um intervalo:
Você pode também temporariamente pausar e resumir um intervalo:


interval.pause()
interval.pause()
interval.resume()
interval.resume()


Se você pausar o intervalo e nunca resumir ou terminá-lo, as ações restantes do intervalo não serão executadas.
Se você pausar o intervalo e nunca resumir ou terminá-lo, as ações restantes do intervalo não serão executadas.
Linha 35: Linha 35:
E você pode pular no tempo dentro deu m intervalo:
E você pode pular no tempo dentro deu m intervalo:


interval.setT(time)
interval.setT(time)


Isso faz o intervalo mover-se para o tempo dado, em segundos desde á execução do intervalo. O intervalo executará todas as ações entre seu tempo atual e o tempo novo; não há modo de passar no tempo sem realizar ações de intervenção.
Isso faz o intervalo mover-se para o tempo dado, em segundos desde á execução do intervalo. O intervalo executará todas as ações entre seu tempo atual e o tempo novo; não há modo de passar no tempo sem realizar ações de intervenção.
Linha 43: Linha 43:
Finalmente, existem vários métodos úteis de questionamento:
Finalmente, existem vários métodos úteis de questionamento:


interval.getDuration()
interval.getDuration()


Retorna a duração do intervalo em segundos
Retorna a duração do intervalo em segundos


interval.getT()
interval.getT()


Retorna o tempo passado atual do intercalo, desde o começo do intervalo
Retorna o tempo passado atual do intercalo, desde o começo do intervalo


interval.isPlaying()
interval.isPlaying()


Retorna verdadeiro se o intervalo estiver tocando, ou falso se ele não começou, já terminou ou foi explicitamente pausado ou terminado.
Retorna verdadeiro se o intervalo estiver tocando, ou falso se ele não começou, já terminou ou foi explicitamente pausado ou terminado.


interval.isStopped()
interval.isStopped()


retorna verdadeiro se o intervalo não começou, já foi tocado até o fim, ou foi explicitamente parado através de finish(). Isso não é bem o mesmo que interval.isPlaying(), já que ele não retorna verdadeiro para um intervalo pausado.
retorna verdadeiro se o intervalo não começou, já foi tocado até o fim, ou foi explicitamente parado através de finish(). Isso não é bem o mesmo que interval.isPlaying(), já que ele não retorna verdadeiro para um intervalo pausado.

Revisão das 04h47min de 28 de novembro de 2009

O sistema de intervalos do Panda3D é um mecanismo sofisticado para tocar ações configuradas. Com o uso de intervalor, você pode construir uma rede complexa de animações, efeitos de som, ou qualquer outra ação, e rodar o script em demanda

O núcleo do sistema é a classe intervalo. Ali existem diversos tipos de intervalos, que serão discutidos em detalhes nas próximas páginas, mas todos eles têm em comum a seguinte propriedade: cada intervalo representa uma ação (ou série de ações) que ocorrem em um intervalo de tempo finito e especifico(por isso o nome).

O verdadeiro poder do sistema de intervalo vem das sequencias e paralelos, que são um tipo especial de intervalo que contem intervalos de qualquer tipo ( incluindo sequencias adicionais e/ou paralelos). Ao usar esse grupo de intervalos, voce pode facilmente montar um script complexo dos átomos básicos usando intervalos.

Em qualquer módulo Panda3D que usa intervalos, você precisa primeiro importar o módulo de intervalo:

from direct.interval.IntervalGlobal import *

Existem vários métodos úteis, os quais todos intervalos têm em comum.

Para começar a rodar um intervalo, use um dos seguintes:

interval.start()
interval.start(startT, endT, playRate)
interval.loop()
interval.loop(startT, endT, playRate)

Os três parâmetros são opcionais. Os parametros startTime e endTime definem o subset do intervalo á tocar; esse tempo deve ser dado em segundos, medidos do começo do intervalo. O playRate, como especificado, permite que você rode o intervalo mais rapido ou mais lento que o tempo real; o valor padrão é 1.0, para rodar em tempo real.

Normalmente, um intervalo tocará até o fim e terminará á si mesmo, mas você pode parar a execução do intervalo prematuramente:

interval.finish()

Isso terminará o intervalo e moverá o seu estado para o estado final, como se ele tivesse tocado até o fim. Esse é um ponto muito importante, e ele permite que você defina ações de limpeza críticas dentro do próprio internvalo, que garantidamente foram executadas no momento que o intervalo termina.

Você pode também temporariamente pausar e resumir um intervalo:

interval.pause()
interval.resume()

Se você pausar o intervalo e nunca resumir ou terminá-lo, as ações restantes do intervalo não serão executadas.

E você pode pular no tempo dentro deu m intervalo:

interval.setT(time)

Isso faz o intervalo mover-se para o tempo dado, em segundos desde á execução do intervalo. O intervalo executará todas as ações entre seu tempo atual e o tempo novo; não há modo de passar no tempo sem realizar ações de intervenção.

É legal configurar o tempo para um tempo anterior; o intercalo fará o seu melhor para resetar o seu estado para um estado anterior. Em alguns casos isso não pode ser possível( particulamente se uma função intercalo estiver envolvida )

Finalmente, existem vários métodos úteis de questionamento:

interval.getDuration()

Retorna a duração do intervalo em segundos

interval.getT()

Retorna o tempo passado atual do intercalo, desde o começo do intervalo

interval.isPlaying()

Retorna verdadeiro se o intervalo estiver tocando, ou falso se ele não começou, já terminou ou foi explicitamente pausado ou terminado.

interval.isStopped()

retorna verdadeiro se o intervalo não começou, já foi tocado até o fim, ou foi explicitamente parado através de finish(). Isso não é bem o mesmo que interval.isPlaying(), já que ele não retorna verdadeiro para um intervalo pausado.