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

telemidia.puc.rio.br
from telemidia.puc.rio.br More from this publisher
11.07.2015 Views

local contador = 0function tratador (evt)contador = contador + 1local evtContador = {class = 'ncl',type = 'attribution',name = 'contador',value = contador,}evtContador.action = 'start'event.post(evtContador)evtContador.action = 'stop'event.post(evtContador)event.post {class = 'ncl',type = 'presentation',label = 'inc',action = 'stop',}endevent.register(tratador,'ncl','presentation','inc','start')Listagem 18.11 Código NCLua do Exemplo 18.2.O script começa declarando uma variável para guardar a contagem decliques. A variável não possui relação direta com a propriedade do NCLua,de mesmo nome, definida no documento NCL. O manuseio da propriedade éfeito através da postagem de eventos, conforme apresentado a seguir.A função “tratador” é então definida e registrada (na última linha docódigo). Os parâmetros extras na chamada à função register servem parafiltrar apenas os eventos desejados; no caso, eventos ncl de início deapresentação da âncora “inc”. Quando o botão é selecionado, iniciando aâncora “inc”, a função tratador é executada. A função incrementa o contadorinterno e posta um evento de início de atribuição (action='start'), para indicara mudança na propriedade “contador”.IMPORTANTE: Note que é necessário sinalizar também o fim daatribuição, fazendo com que a máquina de estados da propriedade “contador”volte ao estado “sleeping” e futuras atribuições surtam efeito. Pelo mesmomotivo, é necessário sinalizar o término da âncora “inc”, postando o eventode “stop” da apresentação, no fim da função.O NCLua não tem como saber o momento exato em que a propriedade“contador” será consultada pelo documento NCL — por isso, sempre queincrementa o valor, também atualiza a propriedade.386

Neste ponto, uma releitura do exemplo O Primeiro João, da Seção 3.12,pode ser útil para firmar os conceitos discutidos até aqui neste capítulo.18.4 Desenhando na Região do ObjetoQuando um NCLua é carregado, o formatador NCL cria um objeto gráficopara representar a região associada à mídia NCLua no documento. Esseobjeto gráfico é pré-carregado na variável global “canvas” do script, e éatravés dela que todas as operações gráficas são efetuadas. Caso o objeto demídia NCLua não esteja associado a nenhuma região, o valor do “canvas”será igual a “nil”.Como exemplo (Listagem 18.12), caso a região a seguir esteja associada aoobjeto NCLua, a variável “canvas” do script irá representá-la, com tamanho300×100 e posicionada em (20,200).Listagem 18.12 Código NCL de uma região a ser associada com um objeto NCLuaExistem diversas operações gráficas suportadas pelo módulo de canvas,tais como desenho de linhas, textos e imagens. A lista completa de operaçõespode ser consultada no Capítulo 10 da NBR 15606-2 [ABNT, 2011]. Oexemplo a seguir cria um novo canvas representando a imagem passada,desenhando-a centralizada na região e acompanhada de uma legenda. AFigura 18.6 exibe o resultado visual da execução do script da Listagem 18.3.Figura 18.6 Resultado da execução do script da Listagem 18.13.387

local contador = 0function tratador (evt)contador = contador + 1local evtContador = {class = 'ncl',type = 'attribution',name = 'contador',value = contador,}evtContador.action = 'start'event.post(evtContador)evtContador.action = 'stop'event.post(evtContador)event.post {class = 'ncl',type = 'presentation',label = 'inc',action = 'stop',}endevent.register(tratador,'ncl','presentation','inc','start')Listag<strong>em</strong> 18.11 Código <strong>NCL</strong>ua do Ex<strong>em</strong>plo 18.2.O script começa declarando uma variável para guardar a contag<strong>em</strong> decliques. A variável não possui relação direta com a propriedade do <strong>NCL</strong>ua,de mesmo nome, definida no documento <strong>NCL</strong>. O manuseio da propriedade éfeito através da postag<strong>em</strong> de eventos, conforme apresentado a seguir.A função “tratador” é então definida e registrada (na última linha docódigo). Os parâmetros extras na chamada à função register serv<strong>em</strong> parafiltrar apenas os eventos desejados; no caso, eventos ncl de início deapresentação da âncora “inc”. Quando o botão é selecionado, iniciando aâncora “inc”, a função tratador é executada. A função incr<strong>em</strong>enta o contadorinterno e posta um evento de início de atribuição (action='start'), para indicara mudança na propriedade “contador”.IMPORTANTE: Note que é necessário sinalizar também o fim daatribuição, fazendo com que a máquina de estados da propriedade “contador”volte ao estado “sleeping” e futuras atribuições surtam efeito. Pelo mesmomotivo, é necessário sinalizar o término da âncora “inc”, postando o eventode “stop” da apresentação, no fim da função.O <strong>NCL</strong>ua não t<strong>em</strong> como saber o momento exato <strong>em</strong> que a propriedade“contador” será consultada pelo documento <strong>NCL</strong> — por isso, s<strong>em</strong>pre queincr<strong>em</strong>enta o valor, também atualiza a propriedade.386

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

Saved successfully!

Ooh no, something went wrong!