sábado, 25 de abril de 2009

Interatividade, sincronismo e documentos NCL

A linguagem NCL está estruturada para organizar mídias. Dessa forma ela gerencia o comportamento de mídias no tempo e no espaço. Como já comentado em artigo anterior, não é possível criar nada através da NCL; tudo deve ser desenvolvido em outros ambientes. A linguagem é responsável por colar essas mídias umas nas outras, o que determina o comportamento da aplicação através da atribuição de condições e ações. Assim, uma aplicação para TV digital pode ter apenas elementos de sincronismo das mídias, sem qualquer participação do usuário.

Antes de entrarmos em detalhes, vamos separar a interatividade das ações de sincronismo no tempo e no espaço sem participação do usuário. Tecnicamente, a interatividade se caracteriza por uma ação do usuário através do controle remoto que gera um retorno no sistema de TV digital. Dessa forma, pode aparecer, por exemplo, um botão vermelho na tela da TV informando que há uma interatividade disponível (para quem possui TV por assinatura digital esse recurso é amplamente explorado). Ao apertar o botão vermelho do controle remoto o set top box responde parando esse botão vermelho e inicia a interatividade correspondente.

Por esse exemplo, podemos perceber que o botão vermelho apareceu sozinho. Ou seja, isso não foi interatividade. Apenas uma relação de sincronismo no tempo e no espaço. No tempo porque o botão apareceu em um determinado tempo do vídeo, que pode ser definido pela emissora de TV. Por exemplo, durante um jogo de futebol, o botão vermelho sinaliza que saiu gol em um outro jogo. Ao apertar o botão vermelho do controle remoto (ação interativa) aparece uma tela informando qual foi o jogo, quem fez o gol, o placar e outras estatísticas.

O sincronismo é no espaço porque o botão vermelho aparece em uma determinada região da tela da TV. Essa região é definida por valores absolutos (em pontos) ou por valores relativos (em percentual). Como fazer cada declaração dessas será visto nos próximos textos.

Portanto, para fazer o botão vermelho aparecer na tela precisamos definir uma região para ele e um momento no qual ele deve aparecer. Podemos tratar da seguinte forma: quando o programa voltar do intervalo comercial, na vinheta de retorno, o botão aparece para sinalizar que existe uma interatividade. Porém, para desenvolver esse exemplo, vamos antes ver a estrutura de um documento NCL.

A sintaxe e a estrutura de documentos NCL são muito similares ao HTML. Portanto, tem um cabeçalho e um corpo do documento. Toda declaração deve ser aberta com uma tag <>, como no exemplo abaixo.

Neste exemplo temos uma seção de descritores, que faz parte do cabeçalho do documento, onde há uma abertura da base com a tag , que é fechada . Dentro dela estão os descritores, que começam com e terminam com . Tudo na linguagem NCL segue essa sintaxe. Ah, os termos são em inglês mesmo. Todos.

Por falar em seções dentro do cabeçalho, podemos ter uma base de regiões (onde descrevemos as regiões em que as mídias devem aparecer); uma de descritores (que por hora vamos chamar de elementos de ligação entre as regiões e as mídias); uma de regras (para trabalhar e testar variáveis); uma de conectores (para determinar quando as mídias devem aparecer); e uma de transições (um conjunto de transições que podem ser usadas nas mídias).

Já no corpo do documento, declaramos as mídias e os links. Além disso, como toda linguagem NCL é estruturada sob o paradigma da causalidade (para que algum efeito ocorra é necessário um causa), é preciso especificar uma porta de entrada no contexto Body. Essa porta iniciará a primeira mídia a partir da qual todas as demais ações acontecem. A estrutura do documento está na figura a seguir:

Dessa forma, para que nosso botão apareça na tela é preciso declarar:

  1. uma região em que ele vai aparecer;
  2. um descritor que vai ligar essa região à mídia;
  3. uma mídia que vai apontar para o botão.

A região pode ser descrita da seguinte forma:

Nessa figura, abrimos a regionBase e declaramos uma região, onde:

  1. id é nome da região;
  2. width é a largura;
  3. height é a altura;
  4. left é a distância da região em relação à margem esquerda da TV;
  5. top é a distância da região em relação à margem superior da TV.

Vamos criar o descritor:

Abrimos a base de descritores e colocamos o descritor dentro, declarando a qual região ele se refere. A parte de descritores está simplificada ao máximo aqui. No futuro iremos tratar desse tema em vários outros artigos, pois os descritores são fundamentais para determinar o comportamento inicial das mídias.

Tendo encerrado a parte mínima do cabeçalho, vamos criar o corpo do documento:

Nesse caso, criamos o corpo do documento , uma porta, responsável pelo começo da aplicação, com um nome e um componente (que é a mídia inicial). Também descrevemos a mídia, com um nome, o descritor que ela irá utilizar e que vai definir a região em que ela deve aparecer, e uma localização da mídia, criada anteriormente em um editor de imagens. Essa localização aponta para onde o arquivo está salvo e armazenado. No caso, há uma pasta chamada media no mesmo nível onde está o arquivo .ncl.

A aplicação completa deve ter essa cara:

Antes de terminar é necessário salientar que o nome (id) de qualquer elemento da linguagem NCL não pode ser repetido. A sintaxe não aceita dois objetos com o mesmo nome. Uma dica para evitar esse problema é sempre começar o nome com letras que indicam a base em que ele está inserido. Assim, qualquer ID de região começa com Rg; de descritor com d; de porta com p; e assim sucessivamente. Não é uma regra, mas ajuda bastante.

Agora é só testar a aplicação em alguma ferramenta de teste, descrita em texto anterior. O mais simples é abrir o emulador para Windows e executar o arquivo .ncl. Ao dar play deve aparecer o botão no lado superior esquerdo. Essa aplicação é o exemplo mais simples de documento NCL.


Neste exemplo não tratamos de vídeo, uma vez que o mesmo já estaria no ar. Apenas colocamos um botão vermelho sobre ele. Nos próximos textos iremos aprofundar mais elementos de sincronismo, para chegar na interatividade propriamente dita.

Fonte http:://



Nenhum comentário:

Postar um comentário