Ir para o conteúdo

 Voltar a Linguagem Lua
Tela cheia

Eventos do controle não são registrados

7 de Novembro de 2011, 19:25 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 5 vezes

Tou tentando construir uma aplicação de perguntas e respostas, porém estou com problema no código pois não consigo fazer com que os eventos do controle sejam registrados. Já olhei vários tutoriais da linguagem LUA e fiz exatamente como eles ensinam, mesmo assim quando respondo uma pergunta ele não passa para a próxima. Meu código ta abaixo:

 

function redraw(pergunta, alternativa1, alternativa2, alternativa3, alternativa4)

--Desenhando FUNDO

local regLarg, regAlt = canvas:attrSize()

canvas:attrFont('arial', 30)

local img = canvas:new('media/telaLua.png')

local fundo = { img=img, x=0, y=0, dx=regLarg, dy=regAlt }

canvas:compose(fundo.x, fundo.y, fundo.img)

--DESENHANDO TEXTO


local txt = pergunta

local txtLarg, txtLAlt = canvas:measureText(txt)

local txtX = 10

local txtY = 150

canvas:attrColor('white')

canvas:drawText(txtX, txtY, txt)


--DESENHANDO BOTÕES E ALTERNATIVAS


local botaoA = canvas:new('media/botaoA.png')

local imgLargA, imgAltA = canvas:attrSize()

canvas:compose ((regLarg-imgLargA)+15, 250, botaoA)

local txtA = alternativa1

local txtLargA, txtAltA = canvas:measureText(txtA)

canvas:drawText(100, 250, txtA)


local botaoB = canvas:new('media/botaoB.png')

local imgLargB, imgAltB = canvas:attrSize()

canvas:compose ((regLarg-imgLargB)+15, 300, botaoB)

local txtB = alternativa2

local txtLargB, txtAltB = canvas:measureText(txtB)

canvas:drawText(100, 300, txtB)

local botaoC = canvas:new('media/botaoC.png')

local imgLargC, imgAltC = canvas:attrSize()

canvas:compose ((regLarg-imgLargC)+15, 350, botaoC)

local txtC = alternativa3

local txtLargC, txtAltC = canvas:measureText(txtC)

canvas:drawText(100,350, txtC)

local botaoD = canvas:new('media/botaoD.png')

local imgLargD, imgAltD = canvas:attrSize()

canvas:compose ((regLarg-imgLargD)+15, 400, botaoD)

local txtD = alternativa4

local txtLargD, txtAltD = canvas:measureText(txtD)

canvas:drawText(100,400, txtD)

canvas:flush()

end

function tratador (evt)

local nota = 0

local numPergunta = 1

if numPergunta == 1 then

pergunta = 'Quanto e 2+2?' 

alternativa1 = '5'

alternativa2 = '4'

alternativa3 = '3'

alternativa4 = '6'

redraw(pergunta, alternativa1, alternativa2, alternativa3, alternativa4)

if (evt.class == 'key') and (evt.type == 'press') then

if evt.key == 'RED' then

nota = nota + 0

numPergunta = 2

elseif evt.key == 'GREEN' then

nota = nota + 10

numPergunta = 2

elseif evt.key == 'YELLOW' then

nota = nota + 0

numPergunta = 2

elseif evt.key == 'BLUE' then

nota = nota + 0

numPergunta = 2 

end

end

end

if numPergunta == 2 then

pergunta = 'Quanto e 5+5?'

alternativa1 = '10'

alternativa2 = '11'

alternativa3 = '9'

alternativa4 = '8'

redraw(pergunta, alternativa1, alternativa2, alternativa3, alternativa4)

if (evt.class == 'key') and (evt.type == 'press') then

if evt.key == 'RED' then

nota = nota + 10

numPergunta = 3

elseif evt.key == 'GREEN' then

nota = nota + 0

numPergunta = 3

elseif evt.key == 'YELLOW' then

nota = nota + 0

numPergunta = 3

elseif evt.key == 'BLUE' then

nota = nota + 0

numPergunta = 3 

end

end

end

if numPergunta == 3 then

pergunta = 'Quanto e 20+5?'

alternativa1 = '27'

alternativa2 = '15'

alternativa3 = '13'

alternativa4 = '25'

redraw(pergunta, alternativa1, alternativa2, alternativa3, alternativa4)

if (evt.class == 'key') and (evt.type == 'press') then

if evt.key == 'RED' then

nota = nota + 0

elseif evt.key == 'GREEN' then

nota = nota + 0

elseif evt.key == 'YELLOW' then

nota = nota + 0

elseif evt.key == 'BLUE' then

nota = nota + 10

end

end

end

end

event.register(tratador) 

Autor: Victor Laerte Oliveira


22 comentários

  • 2e9e46c2d20afa5d4d5a44cb69bca9ce?only path=false&size=50&d=404Victor Laerte Oliveira(usuário não autenticado)
    13 de Novembro de 2011, 13:38

     

    Alguém pode me ajudar? Posso mandar até o projeto inteiro.

    Preciso muito que esse código funcione

    • 5df5d8eeb3770422cc9c42a466faee62?only path=false&size=50&d=404Roberto Azevedo(usuário não autenticado)
      17 de Novembro de 2011, 13:05

       

      Oi Victor,

      para que os eventos de teclas sejam recebidos pelo nó Lua você tem que colocar um focusIndex para esse nó de mídia no documento NCL e indicar que esse objeto Lua é quem vai controlar as teclas.

      Existem duas formas de fazer isso:

      1. Assumindo que temos apenas um objeto, quando o objeto tem um focusIndex e é iniciado, deve então aparecer uma borda (informando que ele está com o foco). Só quando o usuário pressionar ENTER sobre esse objeto (no nosso caso, o Lua) é que o Lua irá comecar a receber os eventos de tecla.

       2. Outra forma, é explicitamente alterar a propriedade "service.currentKeyMaster" do nó settings para o valor do identificador desse nó Lua. Por exemplo, você pode criar um link informando que ao iniciar esse nó Lua, deve-se alterar o valor de "service.currentKeyMaster" para o identificador do Lua.

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