Olá pessoal,
estou tendo problemas para executar dois audios com um tempo de delay entre eles.
O que eu quero fazer: gostaria de exibir um audio em loop, porém com delay entre uma execução e outra, até a interação do usuário. Quando o usuário selecionar uma dada imagem o audio deve parar.
Problema encontrado: eu consigo exibir o audio em loop com delay, porém quando o usuário seleciona a imagem durante o 'tempo de delay' o audio continua em execução. O audio pára sua execução somente quando o usuário seleciona a imagem durante a execução do audio.
Gostaria de saber opiniões sobre o assunto.
Obrigada.
Aline Manera
Autor: Aline Manera
99 comentários
<ncl xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" id="pLoopDelay"> <!--
Arquivos necessarios: abertura.mpg e botao_vermelho.gif no mesmo diretorio deste arquivo.
--> <head>
<regionBase>
<region id="rgTV">
<region id="rgVideo" width="50%" height="50%"/>
<region id="rgBotao" width="10%" height="10%" zIndex="3"/>
</region>
</regionBase>
<descriptorBase>
<descriptor id="dVideo" region="rgVideo"/>
<descriptor id="dBotao" region="rgBotao"/>
</descriptorBase> <connectorBase>
<causalConnector id="onENTERSelectionAbort">
<simpleCondition role="onSelection" key="ENTER"/>
<simpleAction role="abort"/>
</causalConnector>
<causalConnector id="onEndStartDelay3s">
<simpleCondition role="onEnd"/>
<simpleAction role="start" delay="3s"/>
</causalConnector>
</connectorBase>
</head>
<body>
<port id="pMain1" component="cMain" interface="pVideo"/>
<port id="pMain2" component="cMain" interface="pBotao"/> <context id="cMain">
<port id="pVideo" component="video"/>
<port id="pBotao" component="botao"/>
<media id="video" src="abertura.mpg" descriptor="dVideo"/>
<media id="botao" src="botao_vermelho.gif" descriptor="dBotao"/>
<link xconnector="onEndStartDelay3s">
<linkParam name="delay" value="3s"/>
<bind role="onEnd" component="video"/>
<bind role="start" component="video"/>
</link>
</context>
<link xconnector="onENTERSelectionAbort">
<bind role="onSelection" component="cMain" interface="pBotao"/>
<bind role="abort" component="cMain"/>
</link>
</body>
</ncl>
<bind role="onBegin" component="audioNode" interface="aPause"/>
<bind role="pause" component=""audioNode"/>
</link> 3) Colocar um outro áudio para fazer o resume 3 segundos depois (ou quantos segundos quiser de intervalo): <link xconnector="onBeginResumeDelay">
<bind role="onBegin" component="audioNode" interface="aPause">
<bindParam name="delay" value="3s"/>
</bind>
<bind role="resume" component=""audioNode"/>
</link> 4) E o loop continua igual: <link xconnector="onEndStart">
<bind role="onEnd" component="audioNode"/>
<bind role="start" component="audioNode"/>
</link> 5) O resto fica igual. Fica melhor assim? O que acham? Gostei muito desta trilha por ela envolver uma séria dificuldade de concepção. Não é fácil para um programador NCL que está começando perceber como conceber uma idéia limpa. Isso se deve principalmente porque a forma que todos pensariam a implementação é a forma que foi sugerida no início da trilha. Isso envolve um problema conceitual: por definição, não se pode evitar um elo cuja condição já foi disparada. Através da pausa do nó, o problema fica resolvido de forma mais simples. Uma outra possível solução poderia envolver testar o estado do botão que aparece na tela antes de fazer o restart do áudio, mas sou discípulo da simplicidade. Abraços,
Carlos