Olá, estou começando a estudar a integração entre NCL e Lua e estou tendo dificuldades. A aplicação é simples mas estou tendo problemas (eu acho) com a classe Key. A aplicação exibe 3 menus na lateral esquerda da aplicação. Através do focusIndex eu navego por eles. O primeiro e o segundo menus ao dar um OK é startado imagens. O terceiro menu ao dar um start eu inicio o meu arquivo lua. Esse arquivo lua imprime na tela um texto: "O que achou da nossa aplicação ?" e dois retangulos verde e vermelho. Até ai nada d+. O problema é que quero implementar também nesse arquivo lua a possibilidade deu pressionar a tecla verde e vermelha do controle remoto (simulando meio que uma enquete) e iniciar um texto dependendo da escolha do usuário. Estou utilizando a classe Key mas não está funcionando. Abaixo coloco o código do meu arquivo Lua e as partes que interessam do NCL. Se alguém puder ajudar.
Obrigado !
--lua.lua
-- Função que escreve um texto na tela
function escreveTexto(texto)
canvas:attrColor("WHITE")
canvas:attrFont("vera", 24)
canvas:drawText(450,300,texto)
canvas:flush()
end
-- Função que desenha os botoes verde e vermelho na tela
function desenhaBotaoVerde()
canvas:attrColor(0,255,0,150)
canvas:drawRect("fill",480,350,70,70)
canvas:attrColor("WHITE")
canvas:drawText(500,420,"SIM")
canvas:flush()
end
function desenhaBotaoVermelho()
canvas:attrColor(255,0,0,150)
canvas:drawRect("fill",630,350,70,70)
canvas:attrColor("WHITE")
canvas:drawText(650,420,"NAO")
canvas:flush()
end
-- Utilizando a classe NCL
function handlerEscreve(evt)
if evt.class =='ncl' and
evt.type=='presentation' and
evt.action=='start' then
local fundo = canvas:new ('media/fundoPrincipal.png')
canvas:compose (0,0,fundo)
escreveTexto("O que voce achou da aplicação ?")
desenhaBotaoVerde()
desenhaBotaoVermelho()
end
end
event.register(handlerEscreve)
function handlerTecla(event)
-- apenas eventos de tecla me interessam: Utilizando a Classe Key
if event.class == 'key' and
event.type == 'press'
then
-- textos para teclas verde e vermelha
if event.key == 'GREEN' then
canvas:attrColor("WHITE")
canvas:attrFont("vera",24)
canvas:drawText(450,400,"Que bom que gostou da nossa aplicação!")
canvas:flush()
elseif event.key == 'RED' then
canvas:attrColor("WHITE")
canvas:attrFont("vera",24)
canvas:drawText(450,400,"Você não gostou da aplicação !! ")
canvas:flush()
-- main.ncl
...
<media descriptor="dlua" src="lua.lua" id="mdLua"/>
<media type="application/x-ginga-settings" id="nodeSettings">
<property name="service.currentKeyMaster" value="mdLua"/>
</media>
...
<link xconnector="connBase#onKeySelectionStartNStopN" id="inicioInfoLua">
<bind role="onSelection" component="menuLua">
<bindParam name="keyCode" value="VK_ENTER"/>
</bind>
<bind role="start" component="mdLua"/>
<bind role="stop" component="mdFundo1"/>
<bind role="stop" component="mdFundo2"/>
<bind role="stop" component="mdFundo3"/>
</link>
Autor: Fernando Dias Stulback
1212 comentários
<connectorParam name="vNewValue" />
<simpleCondition role="onSelection" />
<compoundAction operator="par">
<simpleAction role="stop" max="unbounded" qualifier="seq"/>
<simpleAction role="start" max="unbounded" qualifier="seq"/>
<simpleAction role="set" value="$vNewValue" max="unbounded" />
</compoundAction>
</causalConnector> <causalConnector id="onKeySelectionStartNStopN">
<connectorParam name="keyCode"/>
<simpleCondition role="onSelection" key="$keyCode" max="unbounded" qualifier="or"/>
<compoundAction operator="seq">
<simpleAction role="start" max="unbounded" qualifier="seq"/>
<simpleAction role="stop" max="unbounded" qualifier="seq"/>
</compoundAction>
</causalConnector> Links: <link xconnector="connBase#onKeySelectionStartNStopN" id="inicioInteratividade">
<bind role="onSelection" component="mdBotaoInterativo">
<bindParam name="keyCode" value="RED"/>
</bind>
<bind role="start" component="mdFundoPrincipal"/>
<bind role="start" component="mdMenuUm"/>
<bind role="start" component="mdMenuDois"/>
<bind role="start" component="mdMenuTres"/>
<bind role="stop" component="mdBotaoInterativo"/>
</link> <link xconnector="connBase#onSelectionStopStartSet" id="inicioInfoMenuUm">
<bind role="onSelection" component="mdMenuUm"/>
<bind role="stop" component="mdFundoPrincipal"/>
<bind role="stop" component="mdFundoMenuDois"/>
<bind role="start" component="mdFundoMenuUm"/>
<bind role="start" component="mdLua" />
<bind role="set" component="nodeSettings" interface="service.currentKeyMaster">
<bindParam name="vNewValue" value="mdLua" />
</bind>
</link>