Ir para o conteúdo

 Voltar a Linguagem Lua
Tela cheia

Alterar o atributo src de um media descriptor em tempo de execução

11 de Maio de 2009, 14:24 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 151 vezes

Olá.

Gostaria de saber se é possível alterar, via script Lua, o atributo src de uma tag media em tempo de execução. Eis a tag de exemplo:

<media descriptor="dVideo1" src"video.wmv" type="video/mpeg" id="video1"/>

O que eu precisava é alterar a exibição do video respondendo a um evento sem com isso ter que trocar de documento NCL.

É possível?

Obrigado.

Autor: Ricardo Abdalla


1717 comentários

  • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
    11 de Maio de 2009, 14:49

     

    É possível fazer isso que desejas com comandos de edição ao vivo mas isso é canhão para matar mosca. Não é necessário.

    Posso me atrever a ensiná-lo como fazer isso mais simples e com melhor uso do NCL?

    1) Use um nó de alternativa:

    <switch id="meuVideo">
        <bindRule constituent="video2" rule="regra2"/>
        <defaultComponent component="video1"/>
       <media descriptor="dVideo1" src"video1.wmv" type="video/mpeg" id="video1"/>
       <media descriptor="dVideo1" src"video2.wmv" type="video/mpeg" id="video1"/>
    </switch>

    Esse nó está dizendo o seguinte:
       SE a regra "regra2" for válida, EU sou o "video2";
       SENÃO eu sou o "video1".

    Se precisar de 5 vídeos diferentes, coloque 5 bindRule e 5 media internos.

    DÚVIDA: é possível mesmo tocar WMV? Achei que não!

    Complementando ...

    2) Como crio essas regras?

    No cabeçalho:

    <head>
    (...)
       <ruleBase>
        <rule id="regra1" var="minhaVariavel" comparator="eq" value="1"/>
        <rule id="regra2" var="minhaVariavel" comparator="eq" value="2"/>
      </ruleBase>
    </head>

    Nesse caso, criei 2 regras ... a "regra1" testa se a variável de nome "minhaVariavel" é igual ("eq") a "1". A segunda testa se "minhaVariavel" é igual a "2". Poderia ter mais regras se precisasse.

    3) Onde defino essa tal "minhaVariavel"?

    Num nó de mídia especial do tipo settings:

            <media id="meuNome" type="application/x-ginga-settings">
                <property name="minhaVariavel" value="1"/>
            </media>

    Um bom lugar para colocá-lo é no mesmo contexto de seu código Lua.

    4) Como mudo o valor dessa variável?
    Um elo faz isso. Você poderia, por exemplo, criar um elo que copia o valor que o nó Lua passa para essa variavel.

    5) Sempre que eu tocar o switch ele vai reavaliar as regras?

    Sim, sempre que der "stop" e "start" no switch, ele vai fazer isso, o que é equivalente a trocar o src mas de um jeito mais controlado e documentado.

    • 92d50ea882419120eeecf238188b59b8?only path=false&size=50&d=404Ricardo Abdalla(usuário não autenticado)
      14 de Maio de 2009, 14:48

       

      Carlos,

      muitíssimo obrigado pela ajuda.

      No entanto, vou descrever um pouco melhor qual é a finalidade, para que você possa compreender porque talvez essa abordagem não resolva o meu problema.

      A aplicação seria uma espécie de jogo de perguntas e respostas, baseadas no conteúdo exibido em um vídeo. Por exemplo: eu exibo o vídeo 1, e faço uma pergunta sobre ele, com 4 possibilidades de resposta. Após a resposta do usuário, passo para um novo vídeo e uma nova pergunta.

      Minha ideia era modelar os dados (i.e: as perguntas, suas respostas e o nome do respectivo arquivo de vídeo) em uma arquivo xml, que seria processado por um xlet ou script lua (onde também estaria a lógica para tratar a verificação da resposta dada).

      Veja que nesta abordagem que você me ensinou, seria inviável tratar muitos arquivos de vídeos, e eu teria as informações sobre os vídeos dependentes do arquivo .ncl .

      Sobre o formato de video wmv, sim, é possível. Eu tenho utilizado aqui sem problemas.

      Agradeço desde já sua atenção! 

       

      • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
        14 de Maio de 2009, 15:38

         

        Oi Ricardo,

        Acho que vai funcionar sim. Seu exemplo é muito bom para mostrar uma faceta pouco explorada de NCL.

        Note que você gostaria de anotar as perguntas, vídeos e respostas de alguma forma como essa:

        <quiz>
        <question video="srcDoVideo1" question="Minha pergunta?" a="Resposta 1" b="Resposta 2" c="Resposta 3" d="Resposta 4" answer="a"/>
        ( ... )
        </quiz>

        Dai gostaria de usar um código Lua para ler essa informação e transformá-la no seu programa.

        Por que usar uma linguagem de abstração diferente se você pode usar NCL direto?

        <switch id="quiz">
           <bindRule rule="rQuestion1" constituent="question1"/>
           <media id="question1" src="srcDoVideo1" descriptor="meuDescriptorDoVideo">
              <property name="question" value="Minha pergunta?"/>
              <property name="a" value="Resposta 1"/>
              <property name="b" value="Resposta 2"/>
              <property name="c" value="Resposta 3"/>
              <property name="d" value="Resposta 4"/>
              <property name="answer" value="a"/>
           </media>
        </switch>

        Quer imprimir a pergunta e as respostas na tela? Ora, faça um Lua que recebe por um elo os valores das propriedades "a", "b", "c", "d", "question" e "answer" e as usa para imprimir na tela o esperado.

        Sua anotação está ali do mesmo jeito.

        Pois bem, seu problema exige de alguma forma que use o tal XML? Ah ... então o que você precisa apenas é de uma transformação XSLT de seu XML para NCL (ou um programa que o faça).

        Divirta-se!

        Carlos

         

        • 201656b83337aa76f8a1de40ce226268?only path=false&size=50&d=404Günter Herweg(usuário não autenticado)
          14 de Maio de 2009, 17:12

           

          Oi Carlos, aproveitando essa trilha, tenho outra duvida:

          Supondo uma aplicacao onde a pessoa acessa uma mensagem que recebeu de outra pessoa.

          Para ler a mensagem a pessoa se identifica na app (login), via Lua, por exemplo, e entao a app retorna um link onde esta a mensagem.

          Entao eu usaria esse link no src do nó ncl para exibir a mensagem. Isso é possivel? Ai sim eu teria que atualizar dinamicamente o src.

          []s

           

          • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
            14 de Maio de 2009, 19:41

             

            Boa! Esperem-me sempre nesses papos bacanas! :-)

            Estamos implementando uma aplicação que requer exatamente isso.

            No nosso caso, o telespectador digita um ID numa tela de login (similar a vc) e precisamos desse ID para montarmos uma URL.

            Exemplo: para o ID 123, montamos serv​idor​Test​e.co​m.br​/app​/nom​e?ID​=123​. O resultado dessa requisição, por exemplo, é o nome do cliente de ID 123 que temos que mostrar na TV.

            O atributo src da <media> é protegido por diversas razões. Não é esse o caminho de fazer isso.

            Há 3 soluções que analisamos:

            Opção 1) Nós apenas montamos a URL via código Lua, mandamos e recebemos a resposta HTTP via código Lua e usamos essa informação para montar o canvas do Lua.

            Escolhemos isso. Não menospreze o poder disso porque aplicações de TV exibem pouco texto. Isso pode funcionar para a maioria das vezes. Funciona também se tiver que mineirar essa informação via Lua do HTML resultante.

            Opção 2)  Montamos a URL via código Lua, mandamos e recebemos a resposta HTTP via código Lua e escrevemos um arquivo de nome sempre igual "saida.html". Nossa aplicação NCL tem um nó de mídia cujo src sempre é esse. Pronto: o conteúdo é dinâmico, não o NCL!

            Problema: o bendito Links da implementação de referência aqui do Software Público não suporta isso. Implementações comerciais provavelmente o farão.

            Opção 3) Montamos a URL via código Lua, daí usamos os comandos de edição ao vivo para criarmos um novo nó NCL (addNode) com esse src montado. Adicionamos também um link (addLink) para tocarmos esse nó.

            Gostamos dessa opção para casos em que há muita coisa formatada para se mostrar.

            • Aee3a44929134136b9fc84e2dbd23401?only path=false&size=50&d=404Rodrigo Mizobe(usuário não autenticado)
              31 de Julho de 2009, 12:46

               

              Bom dia Carlos,

              se as implementações comerciais suportaram atualização do conteúdo dinanico, e a implementacao de referencia nao, como ficaria o desenvolvimento das aplicacoes?

              Por exemplo, as aplicacoes teriam que verificar o ambiente ao qual sera executado?Sera desenvolvido em dois planos a aplicacao? tipo atualizacao de conteudo dinamico e outra sem esse possibilidade? 

              • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
                31 de Julho de 2009, 14:28

                 

                Obviamente não Rodrigo.

                Era legal reler a trilha para você entender melhor. Você entendeu algo errado e não consegui daqui entender o que foi que você não compreendeu (ou o que você entendeu). Se tivesse compreendido seu equívoco, poderia ajudar melhor.

                Essa minha frase:

                "Problema: o bendito Links da implementação de referência aqui do Software Público não suporta isso. Implementações comerciais provavelmente o farão."

                Significa: para tocar um HTML é preciso de um browser HTML. Aqui na implementação de referência usamos o Links, que é open-source. Há outros bem melhores: o Chrome, o Firefox, o IE. O Links tem limitações mas é o melhor open-source que dispomos. Implementações comerciais podem usar outros.

                Não tem nada a ver com conteúdo dinâmico ou estático. O papo tinha a ver com o player HTML.

                O objetivo do middleware em um sistema de TV digital é exatamente o de permitir que você implemente sua aplicação uma única vez e ela roda homogêmea em receptores de fabricantes diferentes, de forma transparente. Percebe como sua pergunta é  MUITO equivocada? :)

                • Aee3a44929134136b9fc84e2dbd23401?only path=false&size=50&d=404Rodrigo Mizobe(usuário não autenticado)
                  1 de Agosto de 2009, 12:13

                   

                  Perdao, perdi-me no meio da trilha, mas uma dúvida que tenho é que é possível atualizar um contiudo dinamicamente? Tipo um script lua gera um xml com o msm nome de arquivo, sempre que o arquivo for alterado, será alterado na exibição? ou será preciso parar e reiniciar a mídia no caso, de algum evente, tipo se desejasse criar um cliente de chat(protocolo do live), onde sempre remeteria o xml...

                  Reconheco meu equivoco em confundir o links browser do links com intuito de dizer elos...

                  • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
                    1 de Agosto de 2009, 18:31

                     

                    Esse seu exemplo é típico o de implementar o código Lua de forma parecida como se ele fosse um player de mídia. Nesse seu caso, me parece conveniente que haja um script Lua atualizando esse XML e um outro script que exibe esse XML da forma desejada.

                    Agora suponha que queria trocar - por exemplo - uma imagem em tempo de exibição. Aí não tem jeito: você precisa trocar o conteúdo daquele arquivo, parar e reinicar a mídia, para que troque a imagem na tela.Faz todo sentido ser assim.

                    Note, por exemplo, que você pode usar os comandos de edição ao vivo para fazer a mesma coisa adicionando um novo nó ou um nó de mesmo id apontando para outro src. Isso, a meu ver, é canhão para matar mosca, mas está lá e pode ser usado.

                    "Reconheco meu equivoco em confundir o links browser do links com intuito de dizer elos..."

                    Claro! Foi isso! Perfeitamente compreensível. :-)

                    • 0e0bb701f1b73af0bdb5e06871f41322?only path=false&size=50&d=404Rafael Pinto(usuário não autenticado)
                      4 de Outubro de 2009, 13:01

                       

                      Eu estou com um problema parecido...

                       Tenho uma mídia que sempre olha pro mesmo html, em tempo de execução eu altero esse arquivo, paro e inicio a mídia e o conteúdo apresentado continua o mesmo, mesmo o arquivo sendo alterado...

                       Acredito que o links use cache de html, já tentei colocar tags META para expiração de cache, mas sem sucesso...

                      Alguém tem alguma idéia?

                      • 1e29d0095154ec9fed26313e9afb8f36?only path=false&size=50&d=404Manoel Campos da Silva Filho(usuário não autenticado)
                        4 de Outubro de 2009, 14:33

                         

                        Poderia tentar apagar o arquivo antes. Sendo um arquivo novo quem sabe funcione. Para fazer isso em lua vc pode executar os.execute("rm NomeDoArquivo"), considerando que o mesmo está na pasta do arquivo lua.

                        Eu pretendo utilizar algo parecido. Assim, avise se funcionou.

        • 92d50ea882419120eeecf238188b59b8?only path=false&size=50&d=404Ricardo Abdalla(usuário não autenticado)
          1 de Junho de 2009, 21:39

           

          Carlos,

          estou tentando implementar estas dicas que você me deu.

          Achei interessante a sua idéia, e aparenta ser mais fácil do que usar um xml.

          Mas acho que ainda estou me confundindo com algumas coisas.

          Vou expor aqui algumas dúvidas, porque o documento que estou montando não está funcionando (embora não de erro):

          1. Utilizando a seguinte estrutura:

          <switch id="quiz">
             <bindRule rule="rQuestion1" constituent="question1"/>
             <media id="question1" src="media/video.wmv" type="video/mpeg" descriptor="dVideo1"> 
             <property name="question" value="Minha pergunta?"/>
                <property name="a" value="Resposta 1"/>
                <property name="b" value="Resposta 2"/>
                <property name="c" value="Resposta 3"/>
                <property name="d" value="Resposta 4"/>
                <property name="answer" value="a"/>
             </media>
          </switch>

          devo definir a porta de entrada do meu documento para o switch?

          2. No seu post anterior, você disse que devo definir um nó media especial para definir variaveis, como este:

          <media id="meuNome" type="application/x-ginga-settings">
                      <property name="minhaVariavel" value="1"/> 
          </media>

          Mas no exemplo da minha primeira pergunta (retirado do seu post), colocado acima, as variaveis não são do tipo x-ginga-settings, o que me confundiu. Desejo definir, além das perguntas e resposta para cada vídeo, uma variavel que indique qual é o nó de vídeo atual, visto que irei navegar entre eles. Como, afinal, devo fazer?

          Obrigado

          • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
            2 de Junho de 2009, 12:13

             

            Olá Ricardo,

            Respondendo a cada pergunta:

            1) Você pode definir a porta de entrada de seu documento para o switch normalmente.

            Vamos checar se entendeu bem a idéia do <switch>. Ele é um nó de alternativa, que - digamos - é como se fosse um contexto que se transforma em um de seus nós internos, de acordo com critérios que você mesmo define. Nesse seu caso, estou propondo um nó <switch> que vai conter todas as suas N perguntas do seu quiz e o critério para definir qual será a pergunta atual está definido na variável "minhaVariavel".

            Traduzindo para o português o switch acima (incluindo as tais N perguntas):

            switch "quiz"
               se a regra "rQuestion1" for válida, então eu sou o "question1";
               se a regra "rQuestion2" for válida, então eu sou o "question2";
               ( ... )
               se a regra "rQuestionN" for válida, então eu sou o "questionN";
               media "question1" (...) fim media
               media "question2" (...) fim media
               ( ... )
               media "questionN" (...) fim media
            fim do switch "quiz"

            No contexto (o <body> por exemplo) em que está agora o quiz, posso usar as propriedades do nó interno selecionado normalmente. Então poderia ter um nó lua esperando as perguntas, opções e resposta certa para exibir:

            <media id="nodeLua" (...) >
                  <property name="question" />
                  <property name="a" />
                  <property name="b" />
                  <property name="c" />
                  <property name="d" />
                  <property name="answer" />
                  <area id="show"/>
            </media>

            E um elo vai informar o nó lua (que é quem vai escrever por cima de seu "video.wmv" as perguntas e opções de resposta) o que deve ser exibido quando o "quiz" inicia (não sei qual seu critério para mostrar a pegunta, assumi que é o início do quiz):

            <link xconnector="onBeginSet">
                <bind role="onBegin" component="quiz"/>
                <bind role="set" component="nodeLua" interface="question" value="$getQuestion"/>
                <bind role="getQuestion" component="quiz" interface="question"/>
               ( ... ) repita o mesmo para "a", "b", ... "answer"
            </link>

            Pronto. Agora é criar o código Lua que exibe ( canvas:drawText ) esses valores na tela.

            IMPORTANTE: Ao trocar o valor da variável "minhaVariavel" para mudar a pergunta a ser feita para o usuário, você deve ter o cuidado de parar (stop) o "quiz" e iniciar (start) ele de novo para que um novo nó seja selecionado com a nova pergunta.

            DETALHE: Se você vai mostrar as perguntas em cima do mesmo vídeo "video.wmv", então esse vídeo não deveria estar no "quiz". É melhor que ele seja um nó de mídia externo que tem âncoras que vão disparando o quiz. Nesse caso, o conteúdo (src) dos nós internos do switch podem até ficar vazios (caso em que o nó é um temporizador). A forma que você fez se justifica se tiver um vídeo diferente para cada pergunta.

            2) Você pode definir variáveis de usuário em qualquer nó com o elemento <property>. Pode também externalizar variáveis-padrão da mesma forma, como é o caso quando define um <property name="bounds"/> ou <property name="soundLevel"/> em um nó de mídia.

            Mas as variáveis que vai utilizar em regras, você precisa salvar em um nó settings. Explico melhor com um exemplo.

            O cabeçalho onde vai definir as tais regras "rQuestion1" até "rQuestionN" do exemplo acima esclarece:

            <rule id="rQuestion1" var="minhaVariavel" comparator="eq" value="1"/>

             <!-- Em português: a regra de id "rQuestion1" significa testar se a variável global "minhaVariavel" é igual ao valor "1". Ela vai ser verdadeira nesse caso ou falsa em caso contrário. -->

            <rule id="rQuestion2" var="minhaVariavel" comparator="eq" value="2"/>
            (...)
            <rule id="rQuestionN" var="minhaVariavel" comparator="eq" value="N"/>

            Onde N da linha de cima, obviamente é o número de sua última pergunta (digamos, 10).

            Note que a regra é uma informação presente no cabeçalho. Ela se baseia em variáveis globais. O lugar para você escrever variáveis globais na linguagem é um nó settings.

            Então, simplificadamente, você só precisa do nó settings se estiver interessado em criar uma variável que vai ser referenciada nas regras que você definir no cabeçalho. É o seu caso.

            • 92d50ea882419120eeecf238188b59b8?only path=false&size=50&d=404Ricardo Abdalla(usuário não autenticado)
              3 de Junho de 2009, 23:42

               

              Carlos,

              mais uma vez, obrigado pela atenção e pela qualidade da resposta.

              Estou seguindo sua orientação, e o meu switch está funcionando. Mas surgiram novos problemas e algumas dúvidas. Vou colar o código do meu NCL no rodapé desta mensagem, pois talvez eu esteja cometendo erros em alguns dos binds, que ainda não compreendo bem.

              1) Criei uma midia lua, para poder controlar o fluxo do quiz, e as respostas. Na verdade, as perguntas não serão exibidas por cima do vídeo, mas sim numa região abaixo dele. E sim, há 1 vídeo para cada pergunta. No entanto, não estou conseguindo inicializar minha mídia lua.

              Adicionei a tag <bind role="onBegin" component="nodeLua" interface="show"/> dentro do tag link, onde declaro os bind, mas não funciona. Tenho no meu lua apenas a seguinte função:

              function redraw()
               canvas:attrColor('red') 
               canvas:flush()
              end

              No entanto, nada acontece. O Canvas do lua não é inicializado. O que estou fazendo de errado?

              2) Como leio, em meu script lua, os valores das propertys ? Procurei algum exemplo no fórum, mas não achei.

              3) O stop e o start que eu devo fazer para atualizar o nó selecionado, eu faço no lua, ou no próprio documento NCL?

              Desde já, obrigado!

              Código:

              <?xml version="1.0" encoding="ISO-8859-1"?>
              <ncl xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile www.​ncl.​org.​br/N​CL3.​0/pr​ofil​es/N​CL30​EDTV​.xsd​" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" id="newDocument1">
              <head>
               <connectorBase>
                <importBase documentURI="connectors/composerConnectorBase.conn" alias="connBase"/>
               </connectorBase>
               <regionBase>
                <region width="1024" height="768" id="rgTV">
                 <region left="200" top="20" width="320" height="160" id="rgVideo1"/>
                 <region left="200" top="300" width="300" height="150" id="rgLua"/>
                </region>
               </regionBase>
               <descriptorBase>
                <descriptor region="rgVideo1" id="dVideo1"/>
                <descriptor region="rgVideo1" id="dVideo2"/>
                <descriptor region="rgLua" id="dsLua"/>
               </descriptorBase>
               <ruleBase>
                <rule id="rQuestion1" var="codigo" comparator="eq" value="1"/>
                <rule id="rQuestion2" var="codigo" comparator="eq" value="2"/>
               </ruleBase>
              </head>
              <body>

              <port component="quiz" id="port_newDocument1_video1"/>

              <media id="globalSettings" type="application/x-ginga-settings">
                  <property name="codigo" value="1"/>
              </media>

              <media id="nodeLua" src="quiz.lua" descriptor="dsLua">
               <property name="codigo" />
               <property name="question" />
               <property name="a" />
               <property name="b" />
               <property name="c" />
               <property name="answer" />
               <area id="show"/>
              </media>

              <switch id="quiz">
                 <bindRule rule="rQuestion1" constituent="video1"/>
                 <bindRule rule="rQuestion2" constituent="video2"/>
                 <media descriptor="dVideo1" src="media/video1.wmv" type="video/mpeg" id="video1">
                    <property name="codigo" value="1"/>
                 <property name="question" value="Pergunta de Teste 1?"/>
                    <property name="a" value="Resposta 1"/>
                    <property name="b" value="Resposta 2"/>
                    <property name="c" value="Resposta 3"/>
                    <property name="answer" value="a"/>
                 </media>
                 <media descriptor="dVideo2" src="media/video2.wmv" type="video/mpeg" id="video2">
                 <property name="codigo" value="2"/>
                 <property name="question" value="Pergunta de teste 2?"/>
                    <property name="a" value="Resposta 1"/>
                    <property name="b" value="Resposta 2"/>
                    <property name="c" value="Resposta 3"/>
                    <property name="answer" value="b"/>
               </media>
              </switch>

              <link id="linkSet" xconnector="connBase#onBeginSet">
                  <bind role="onBegin" component="quiz"/>
               <bind role="onBegin" component="nodeLua" interface="show"/>
                  <bind role="set" component="nodeLua" interface="question" value="$getQuestion"/>
                  <bind role="getQuestion" component="quiz" interface="question"/>
                  <bind role="set" component="nodeLua" interface="codigo" value="$getCodigo"/>
                  <bind role="getCodigo" component="quiz" interface="codigo"/>
               <bind role="set" component="nodeLua" interface="a" value="$getA"/>
                  <bind role="getA" component="quiz" interface="a"/>
               <bind role="set" component="nodeLua" interface="b" value="$getB"/>
                  <bind role="getB" component="quiz" interface="b"/>
               <bind role="set" component="nodeLua" interface="c" value="$getC"/>
                  <bind role="getC" component="quiz" interface="c"/>
               <bind role="set" component="nodeLua" interface="answer" value="$getAnswer"/>
                  <bind role="getAnswer" component="quiz" interface="answer"/>
              </link>

              </body>
              </ncl>

              • 820d3515c25dc6c1319875ee4fed9224?only path=false&size=50&d=404Carlos de Salles Soares Neto(usuário não autenticado)
                4 de Junho de 2009, 11:35

                 

                Olá Ricardo,

                Ótimo! Está quase finalizando.

                1)

                Você precisa dar start no nó Lua para ter um resultado visual. Eu sugeri aquela âncora "show" mas não acho necessária mais. Basta mesmo dar start no nó.

                2)

                No seu tratador Lua você faz algo assim:

                if evt.class=='ncl' and evt.type=='attribution' and evt.action=='start' then
                   minhaTabelaParaSalvar [ evt.property ] = evt.value
                   evt.action = 'stop'
                   event.post( evt ) -- estou finalizando a atribuição. Está OK?
                end

                3)

                O stop e start no quiz para mudar a pergunta exibida deve ser feita mesmo no NCL. A condição para isso pode ser, por exemplo, a escolha de uma resposta por parte do usuário.

                • 92d50ea882419120eeecf238188b59b8?only path=false&size=50&d=404Ricardo Abdalla(usuário não autenticado)
                  4 de Junho de 2009, 19:08

                   

                  Carlos,

                  estou tendo problemas pra iniciar meu script lua. Coloquei um start para o lua, mas não funcionou. Olhei alguns ncl que eu tinha, e que conseguia pelo menos inicializar o canvas, tentei usar o mesmo código e nada.

                  No entanto, quando retirei os property de dentro da tag media do lua, o canvas pelo menos apareceu, mas nenhum dos meus comandos lua funcionou (tentei mudar a cor do canvas).

                  Saí do NCL Player e fui executá-lo usando a máquina virtual, a seguinte mensagem de erro aparece:

                  NclLinkingConverter::createBind Warning! interfacePoint == NULL, return NULL for 'quiz' in connector 'onBeginSet'
                  NclLinkingConverter::createBind Warning! interfacePoint == NULL, return NULL for 'quiz' in connector 'onBeginSet'
                  NclLinkingConverter::createBind Warning! interfacePoint == NULL, return NULL for 'quiz' in connector 'onBeginSet'
                  NclLinkingConverter::createBind Warning! interfacePoint == NULL, return NULL for 'quiz' in connector 'onBeginSet'
                  NclLinkingConverter::createBind Warning! interfacePoint == NULL, return NULL for 'quiz' in connector 'onBeginSet'
                  NclLinkingConverter::createBind Warning! interfacePoint == NULL, return NULL for 'quiz' in connector 'onBeginSet'

                  Segue em anexo as tags link do meu arquivo:

                  <link id="linkStart" xconnector="connBase#onBeginStart">
                    <bind component="quiz" role="onBegin" />
                    <bind component="nodeLua" role="start" />
                  </link>

                  <link id="linkSet" xconnector="connBase#onBeginSet">
                      <bind role="onBegin" component="quiz"/>  
                      <bind role="set" component="nodeLua" interface="question" value="$getQuestion"/>
                      <bind role="getQuestion" component="quiz" interface="question"/>
                      <bind role="set" component="nodeLua" interface="codigo" value="$getCodigo"/>
                      <bind role="getCodigo" component="quiz" interface="codigo"/>
                   <bind role="set" component="nodeLua" interface="a" value="$getA"/>
                      <bind role="getA" component="quiz" interface="a"/>
                   <bind role="set" component="nodeLua" interface="b" value="$getB"/>
                      <bind role="getB" component="quiz" interface="b"/>
                   <bind role="set" component="nodeLua" interface="c" value="$getC"/>
                      <bind role="getC" component="quiz" interface="c"/>
                   <bind role="set" component="nodeLua" interface="answer" value="$getAnswer"/>
                      <bind role="getAnswer" component="quiz" interface="answer"/>
                  </link>

                   

                  Você sabe me dizer o que estou fazendo de errado?

                  Desde já agradeço. 

Concurso ITU-T de Aplicações para IPTV 2012

13 de Agosto de 2012, 19:38, por Desconhecido

Gostaríamos de lembrar aos possíveis interessados que o prazo de registro para participação no Concurso ITU-T de Aplicações para IPTV 2012 (IPTV Application Challenge) se encerra nesta semana, dia 15 de agosto de 2012. Já o prazo para a submissão de aplicações se encerra no dia 07 de setembro de 2012.



NCL Eclipse 1.6 disponível

10 de Janeiro de 2012, 21:19, por Desconhecido

Caros membros da Comunidade Ginga,



Concursos de Aplicações Ginga-NCL

22 de Setembro de 2011, 3:22, por Desconhecido

    Gostaríamos de relembra-los de que há dois concursos de aplicações Ginga-NCL com inscrições ainda abertas. O convite é aberto a toda a comunidade de desenvolvedores de aplicações para o Middleware Ginga-NCL, em nível internacional. São os seguintes concursos:



Novas versões: Ginga e Ginga-NCL Virtual Set-top Box (v.0.12.3)

1 de Agosto de 2011, 20:58, por Desconhecido



Algumas Boas Notícias da Comunidade Ginga

28 de Julho de 2011, 21:31, por Desconhecido

Autor: Roberto Azevedo