NCLua - eventos attribution

34 views
Skip to first unread message

Roberto

unread,
Nov 11, 2009, 12:18:53 PM11/11/09
to Desenvolvimento para TV digital
Pessoal,

Quando um evento do tipo attribution é disparado? Estou com problemas
ao tentar pegar o valor de uma propriedade (definido em um nó de mídia
NCL) a partir de um código Lua. Pelo que li, apenas através de um
evento attribution eu posso fazer isso. Só que não encontro uma
maneira de dispará-lo. Vou postar meu código para esclarer o problema.
Grato.

NCL:
...
<regionBase>
<region height="100%" id="rgTela" width="100%">
<region height="388" id="rgImagem" left="30%" top="10%" width="291"/
>
</region>
</regionBase>
<descriptorBase>
<descriptor id="dTela" region="rgTela"/>
<descriptor id="dImagem" region="rgImagem"/>
</descriptorBase>
<connectorBase>
<causalConnector id="onBeginSetStart">
<connectorParam name="var"/>
<simpleCondition role="onBegin"/>
<compoundAction operator="seq">
<simpleAction role="set" value="$var"/>
<simpleAction role="start"/>
</compoundAction>
</causalConnector>
</connectorBase>
...
<media descriptor="dImagem" id="imagem" src="bola.jpg" type="image/
jpeg"/>
<media id="scriptId" src="script.lua" type="application/x-ginga-
NCLua">
<property name="variavel" />
</media>
<port component="imagem" id="pInicio"/>
<link xconnector="onBeginSetStart">
<bind component="imagem" role="onBegin"/>
<bind component="scriptId" role="set" interface="variavel">
<bindParam name="var" value="3000"/>
</bind>
<bind component="scriptId" role="start"/>
</link>

Código Lua:

function handler(evt)
print("handler!")
print(evt.class) -- ncl
print(evt.type) -- presentation ou attribution
print(evt.property) -- se presentation, entao property = nil
end

event.register(handler)

Roberto Gerson

unread,
Nov 11, 2009, 9:31:15 PM11/11/09
to dev...@googlegroups.com
Ola Roberto, tente imprimir evt.name, no lugar de evt.property.

Veja se funciona...

2009/11/11 Roberto <jrober...@gmail.com>



--
sds/
Roberto Gerson de Albuquerque Azevedo (http://laws.deinf.ufma.br/~roberto)
----------
Mestrando - Puc-Rio
Pesquisador - Laboratório Telemídia (http://www.telemidia.puc-rio.br)

Bacharel em Ciência da Computação - UFMA
Pesquisador - Laws - Laboratory of Advanced Web Systems - UFMA (http://laws.deinf.ufma.br)
----------
Clube NCL: A liberdade de desenvolver e compartilhar conteúdo interativo!
Visite: http://clube.ncl.org.br

João Roberto

unread,
Nov 11, 2009, 11:03:55 PM11/11/09
to dev...@googlegroups.com
evt.name retornou nil =/

2009/11/11 Roberto Gerson <rg.albu...@gmail.com>



--
João Roberto.

Roberto Gerson

unread,
Nov 11, 2009, 11:33:49 PM11/11/09
to dev...@googlegroups.com
Opa Joao Roberto!

Saquei o seu problema! Antes de mais nada (do script começar a receber eventos) ele tem q ter sido iniciado, ou seja, ele tem que estar em um estado de ocorrendo para que possa receber os eventos de atribuição que vc quer.

Uma solução simples é inverter a ordem das ações no conector, colocando o start antes do set, ficando assim:
    <compoundAction operator="seq">
        <simpleAction role="start"/> <!-- start antes -->

        <simpleAction role="set" value="$var"/>
   </compoundAction>

Assim, o formatador primeiro vai dar um start no nó Lua (deixando ele no estado de ocorrendo) e depois que a atribuição é feita! Observe que estas ações são feitas em sequencia (pq está dito no operator="seq").

Testei aqui e resolveu o problema!
O script imprimiu:

handler!
ncl
presentation
nil

e, depois:

handler!
ncl
attribution
variavel

Ah, e não esqueça que o certo é evt.name, como falei no email anterior, e não evt.property!

Abraços!

2009/11/12 João Roberto <jrober...@gmail.com>

João Roberto

unread,
Nov 12, 2009, 6:38:10 AM11/12/09
to dev...@googlegroups.com
funcionou! pus o start antes, como vc falou, Roberto! muito obrigado! =D

2009/11/12 Roberto Gerson <rg.albu...@gmail.com>



--
João Roberto.
Reply all
Reply to author
Forward
0 new messages