11.07.2015 Views

Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

Programando em NCL 3.0.pdf - Telemidia - PUC-Rio

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A principal vantag<strong>em</strong> do uso do paradigma de eventos é a suacaracterística de acoplamento fraco entre as entidades do sist<strong>em</strong>a. Como sepode observar pela figura, a r<strong>em</strong>oção ou adição de uma entidade não acarretamudanças internas <strong>em</strong> nenhuma outra entidade. Essa característica vai aoencontro dos requisitos de mínima intrusão levantados no Capítulo 17.Para ser informado quando eventos externos são recebidos, um <strong>NCL</strong>uadeve registrar pelo menos uma função de tratamento <strong>em</strong> seu corpo através deuma chamada à função event.register (o nome da função a ser registradapode ser qualquer um). O código de um <strong>NCL</strong>ua segue uma estrutura comuma todos os scripts, como na Listag<strong>em</strong> 18.1.... -- código de iniciaçãofunction tratador (evt)... -- código de um tratadorendevent.register(tratador) -- registro de pelo menos um tratadorListag<strong>em</strong> 18.1 Paradigma de programação orientado a eventosO código de iniciação, a definição do tratador e seu registro são executadosantes que qualquer evento gerado pelo documento <strong>NCL</strong> (ou qualquer entidadeexterna ao script) seja sinalizado aos tratadores <strong>NCL</strong>ua, inclusive o de iníciode apresentação do objeto. Após esse processo de carga do script, efetuadopelo sist<strong>em</strong>a, apenas o código do tratador é chamado, toda vez que ocorre umevento externo. O código de iniciação pode ser utilizado para criar objetos efunções auxiliares que serão usadas pelos tratadores.Eventos são representados por tabelas Lua com chaves e valoresdescrevendo seus atributos. Como ex<strong>em</strong>plo, a função tratadora pode receberum evento (parâmetro evt do tratador, na Listag<strong>em</strong> 18.1), indicando que atecla vermelha do controle r<strong>em</strong>oto foi pressionada pelo telespectador.evt = {class = 'key',type = 'press',key = 'RED',}Listag<strong>em</strong> 18.2 Representação de evento <strong>em</strong> <strong>NCL</strong>ua.A função event.post é utilizada para que um <strong>NCL</strong>ua poste eventos epossa, por ex<strong>em</strong>plo, enviar dados pelo canal de interatividade ou sinalizar seuestado ao documento <strong>NCL</strong>. No ex<strong>em</strong>plo a seguir (Listag<strong>em</strong> 18.3), o <strong>NCL</strong>uasinaliza ao documento o seu fim natural.373

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!