Seguidores

Tecnologia do Blogger.
RSS

[devdtv] Fwd: Executar apenas uma função de um script lua, a partir de um NCL

Pessoal, estou ressuscitando uma antiga thread que tratava a questao
de fazer com que um codigo NCL execute uma determinada funcao do lua.

Quando faço a abordagem abaixo (bem pratica por sinal), que foi citada
pelo Lucas na thread, o metodo do lua nao é chamado. Ela tambem é
descrita na norma ABNTNBR15606-2_2007Vc_2008 pg 94.

Alguém jah utilizou essa forma?

Abs.

---------- Forwarded message ----------
From: "Lucas Augusto Carvalho" <lucasaugusto...@gmail.com>
Date: 15 nov 2008, 11:38
Subject: Executar apenas uma função de um script lua, a partir de um
NCL
To: Desenvolvimento para TV digital


Uma outra forma de fazer é utilizando o próprio atributo property do
elemento <media> para mapear para uma função do objeto lua..

"A outra forma que o código procedural pode ser sincronizado com
outros
objetos NCL é através de elementos
<property>. Um elemento <property> definido como filho de um elemento
<media>, representando um código
procedural, pode ser mapeado para um código de função (ou método) ou
para um
atributo do código. Quando
é mapeado para um código de função, uma ação de elo "set" aplicada à
propriedade deve obrigatoriamente
causar a execução da função com os valores atribuídos interpretados
como
parâmetros de entrada da função.
O atributo name do elemento <property> deve obrigatoriamente ser
utilizado
para identificar a função do código
procedural. Quando o elemento <property> é mapeado para um atributo do
código procedural, a ação "set" deve
obrigatoriamente atribuir o valor ao atributo. Como de costume, a
máquina de
estado de evento associada à
propriedade deve ser controlada pelo exibidor procedural."

Fonte: Ginga-NCL dispositivos Fixos. Norma ABNT NBR 15606-2:2007. p.
55

Lucas Augusto
Ciência da Computação UFS - 8º período
"TV Digital Interativa se faz com Ginga"

2008/11/5 José Ricardo <josericardojun...@gmail.com>

> Rafael, vou tentar responder suas perguntas:

> 1) Até onde sei só é possível utilizar scripts Lua completos como
> mídias, não funções. No entanto vc pode passar um parâmetro para o Lua
> informando qual função vc deseja. por exemplo, vc passa p o Lua a
> mensagem "getProductDescription()". O lua receberá o evento e vc o
> tratará, verificando se a mensagem passada foi
> "getProductDescritpion()". Caso seja, ai basta chamar a função.

> 2) Para passar parâmetros para o Lua vc deve criar uma propriedade
> para o script lua no seu documento NCL:

> <media id="meuScript" descriptor="desc1" src="script.lua"
> type="application/x-ginga-NCLua">
>        <property name="funcao"/>
> </media>

> Cuidado ao criar nome de propriedade pos alguns nomes são reservados
> (transprency, bounds ...)

> Ai, em determinado momento da aplicação NCL vc faz:

> <link xconnector="onBeginSet">
>        <bind component="qualquerCoisa" role="onBegin"/>
>        <bind component="meuScript" role="set" interface="funcao">
>                <bindParam name="var" value="getProductDescription()"/>
>        </bind>
> </link>

> Nesse caso, quando a mídia 'qualquerCoisa' começar o NCL passará a
> string "getProductDescriptor()" para o Lua.

> No Lua, vc trata assim:

> function handler (evt)
>        if evt.class ~= 'ncl' then return end                          --
> Evento da classe NCL
>        if evt.type ~= 'attribution' then return end
> -- Tipo: atribuição
>        if evt.property ~= 'funcao' then return end
> -- Propriedade atribuída: 'funcao'
>        if evt.value == 'getProductDescriptor()' then
> -- Se o valor atribuído for o desejado

> getProductDescriptor()                                        -- Chame
> a função desejada
>        end
> end
> event.register(handler)

> Lembrando que a mensagem passada pode ser qualquer string...
> Você só pode 'setar' essa variável uma vez. Para atribuir um novo
> valor o Lua precisa informar ao NCL que acabou de utilizar a
> propriedade, liberando-a (foi isso que eu entendi)

> No entanto, uu fiz uma aplicação que passa valores para o Lua diversas
> vezes e detectei um problema (que reportei no forum): na versão atual
> da máquina virtual o comando que libera a propriedade não está
> funcionando (dá um erro e aborta a aplicação).

> Olhe esse exemplo do tutorial do NCLua, deve te ajudar com a
> explicação que dei:
>http://www.telemidia.puc-rio.br/~francisco/nclua/tutorial/exemplo2.html<http://www.telemidia.puc-rio.br/%7Efrancisco/nclua/tutorial/exemplo2....>
> Caso tenha interesse o link para a trilha no fórum onde discutimos o
> problema que mencionei acima é esse:

>http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/forums/message-v...

> espero ter ajudado

> On 31 out, 18:56, "Rafael Donato" <rafaeldon...@gmail.com> wrote:
> Olá pessoa,
> gostaria de saber se é possível fazer o seguinte: Definir um nó de
> mídia
> como sendo uma função de um script Lua. Não o script todo, apenas uma
> função.
> Eu explico. Eu tenho uma classe Produto por exemplo, e dentro desta
> classe
> eu implementei uma função "getProductDescription()", dentre várias
> outras.

> Em um determinado instante quero mostrar a descrição do produto,
> acessando
> apenas essa função.
> Queria saber se é possível uma solução desse tipo, ou eu vou precisar
> criar
> um script "getProductDescriptio.lua", que faz isso.

> > Outra dúvida...

> > como é possível passar valores do NCL para o script lua associado a um nó
> de
> > midia NCL?
> > Algo parecido com o que acontece com php, por exemplo.

> > O HTML chama um script php da seguinte maneira: <a
> > href="pagina.php?acessoViaClickMouse=true">Clique aqui</a>
> > O script php então recebe o valor true e preenche a variavel
> > acessoViaClickMouse com este valor.

> > Gostaria de fazer algo semelhante com NCLua. A partir de um arquivo NCL,
> > setar um valor num script lua. Algo desse tipo:
> > <media id="lua" src="anim.lua?id=1" descriptor="dsLua"/>

> > []'s
> > Rafael Donato.

> > 2008/10/31 Rafael Donato <rafaeldon...@gmail.com>

> > > Olá pessoa,
> > > gostaria de saber se é possível fazer o seguinte: Definir um nó de
> mídia
> > > como sendo uma função de um script Lua. Não o script todo, apenas uma
> > > função.
> > > Eu explico. Eu tenho uma classe Produto por exemplo, e dentro desta
> classe
> > > eu implementei uma função "getProductDescription()", dentre várias
> outras.

> > > Em um determinado instante quero mostrar a descrição do produto,
> acessando
> > > apenas essa função.
> > > Queria saber se é possível uma solução desse tipo, ou eu vou precisar
> criar
> > > um script "getProductDescriptio.lua", que faz isso.

> > > []'s
> > > Rafael Donato.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Desenvolvimento para TV digital" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para devdtv@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para devdtv+unsubscribe@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/devdtv?hl=pt-BR.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário