Olá amigos, estou implementando um menu onde cada item de menu faz acesso a um arquivo lua, quando inicio a app através do botão de interatividade consigo colocar o foco no menu e posso escolher um dos itens, após selecionado o item vou para um arquivo lua onde consigo passar o foco e tudo funciona perfeitamente, quando finalizo o lua selecionado e volto para meus itens de menu, todo o menu é carregado perfeitamente inclusive a imagem do menu selecionado que deveria pegar o foco vem certinho, no entanto o foco não funciona.
Obs: tente voltar para o botão de interatividade vermelho por exemplo, quando clico com no botão vermelho para abrir o menu ele também fica se o foco.
Segue o fonte do código retornando do arquivo lua para o menu que deveria estar com o foco:
Como exemplo de execução do arquivo lua utilizei o seguinte projeto caso alguém queira executar http://www.telemidia.puc-rio.br/~francisco/nclua/tutorial/exemplo_03.html
<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="main" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase>
<region id="rgTV" width="100%" height="100%">
<region id="rgTelaPesquisa" width="100%" height="100%">
<region id="rgLuaPesquisa" width="70%" height="76%" right="10%" top="9%" />
</region>
<region id="rgBtnEntrada" width="50" height="50" />
66 comentários
<link id="lVoltaSubMenuLuaTribuna" xconnector="onBeginSetNStopNStartN">
<bind component="luaDepFalando" interface="fim" role="onBegin" />
<bind component="luaDepFalando" role="stop" />
<bind component="cMenuPrincipal" role="start"/>
<bind component="programSettings" interface="service.currentFocus" role="set" >
<bindParam name="value" value="1" />
</bind>
</link> No console me retorno o seguinte: pplicationPlayerAdapter::updateStatus with code = '0' param = 'fim' and type = '10'
ApplicationPlayerAdapter::updateStatus call startEvent 'fim' type '10'
'luaDepFalando_1'; anchor name = 'luaDepFalando' ExecutionObject::getEventFromAnchorId searching 'fim' for '-1/main/luaDepFalando/dLuaPesquisa' with following events = 'fim_1'; anchor name = 'fim' ApplicationPlayerAdapter::startEvent 'fim_1' considering anchor 'fim'
LinkTransitionTriggerCondition::eventStateChanged from object '-1/main/luaDepFalando/dLuaPesquisa' transition = '0' FormatterCausalLink::conditionSatisfied(lVoltaSubMenuLuaTribuna) starting action(s) LinkCompoundAction::run '3' actions
FormatterScheduler::runAction acquiring player for '-1/main/luaDepFalando/dLuaPesquisa' TimeStamp: 19.908
LuaPlayer::setCurrentScope ''
ApplicationPlayerAdapter::stop() '-1/main/luaDepFalando/dLuaPesquisa'
ApplicationExecutionObject::stop(-1/main/luaDepFalando/dLuaPesquisa)
FormatterScheduler::eventStateChanged 'luaDepFalando_1' transition '1'
DFBWindow::~DFBWindow(0xa24eac8) all done
LinkTransitionTriggerCondition::eventStateChanged from object '-1/main/luaDepFalando/dLuaPesquisa' transition = '1'
ExecutionObject::removeEvent 'luaDepFalando_1'from '-1/main/luaDepFalando/dLuaPesquisa'
ApplicationPlayerAdapter::unprepare set object '-1/main/luaDepFalando/dLuaPesquisa' as NULL
FormatterScheduler::runAction event 'cMenuPrincipal_1' for '-1/main/cMenuPrincipal/' OVER COMPOSITION
FormatterScheduler::runActionOverComposition perspective = '-1/main/cMenuPrincipal/mMenuPrincipal'
CascadingDescriptor::~CascadingDescriptor(dMenuPrincipal)
FormatterScheduler::runActionOverComposition perspective = '-1/main/cMenuPrincipal/mMenu1'
CascadingDescriptor::~CascadingDescriptor(dMenu1)
FormatterScheduler::runActionOverComposition perspective = '-1/main/cMenuPrincipal/mMenu2'
CascadingDescriptor::~CascadingDescriptor(dMenu2)
FormatterScheduler::runAction acquiring player for '-1/main/cMenuPrincipal/mMenuPrincipal/dMenuPrincipal' TimeStamp: 19.911
FormatterPlayerAdapter::hasPrepared return false because object = '0' and player = '0'
RuleAdapter::adaptDescriptor for '-1/main/cMenuPrincipal/mMenuPrincipal/dMenuPrincipal'
RuleAdapter::adaptDescriptor first unsolved descriptor address '0'
FormatterPlayerAdapter::hasPrepared return false because object = '0' and player = '0'
ImagePlayerAdapter::createPlayer '/misc/ncl30/PerguntaForum//img/aba_menu.png'
ImagePlayerAdapter::createPlayer '/misc/ncl30/PerguntaForum//img/aba_menu.png' ALL DONE
FormatterPlayerAdapter::createPlayer for '/misc/ncl30/PerguntaForum//img/aba_menu.png' object = '-1/main/cMenuPrincipal/mMenuPrincipal/dMenuPrincipal' objectDevice = '0'
ExecutionObject::prepare(-1/main/cMenuPrincipal/mMenuPrincipal/dMenuPrincipal) 2nd call addEventListener '0xa050548' or '0xa050600'
Player::setScope 'mMenuPrincipal'
FormatterLayout::prepareFormatterRegion deviceRegion class is '0'
FormatterScheduler::eventStateChanged 'mMenuPrincipal_1' transition '0'
FormatterPlayerAdapter::checkAnchorMonitor can't create TIME NominalEventMonitor for '-1/main/cMenuPrincipal/mMenuPrincipal/dMenuPrincipal' because next transition = 'inf'
FormatterScheduler::runAction takes '12' ms to start '-1/main/cMenuPrincipal/mMenuPrincipal/dMenuPrincipal'
FormatterScheduler::runAction acquiring player for '-1/main/cMenuPrincipal/mMenu1/dMenu1' TimeStamp: 19.923
FormatterPlayerAdapter::hasPrepared return false because object = '0' and player = '0'
RuleAdapter::adaptDescriptor for '-1/main/cMenuPrincipal/mMenu1/dMenu1'
RuleAdapter::adaptDescriptor first unsolved descriptor address '0'
FormatterPlayerAdapter::hasPrepared return false because object = '0' and player = '0'
ImagePlayerAdapter::createPlayer '/misc/ncl30/PerguntaForum//img/btn_menu1.png'
ImagePlayerAdapter::createPlayer '/misc/ncl30/PerguntaForum//img/btn_menu1.png' ALL DONE
FormatterPlayerAdapter::createPlayer for '/misc/ncl30/PerguntaForum//img/btn_menu1.png' object = '-1/main/cMenuPrincipal/mMenu1/dMenu1' objectDevice = '0'
ExecutionObject::prepare(-1/main/cMenuPrincipal/mMenu1/dMenu1) 2nd call addEventListener '0xa050548' or '0xa050600'
Player::setScope 'mMenu1'
FormatterLayout::prepareFormatterRegion deviceRegion class is '0'
FormatterScheduler::eventStateChanged 'mMenu1_1' transition '0'
FormatterFocusManager::setFocus index '1' is not in focus Table.
PresentationContext::setPropertyValue propName = 'service.currentFocus' propValue = '1'
ComponentManager::releaseComponentFromObject 'ImageProvider'
FormatterPlayerAdapter::checkAnchorMonitor can't create TIME NominalEventMonitor for '-1/main/cMenuPrincipal/mMenu1/dMenu1' because next transition = 'inf'
FormatterScheduler::runAction takes '4' ms to start '-1/main/cMenuPrincipal/mMenu1/dMenu1'
FormatterScheduler::runAction acquiring player for '-1/main/cMenuPrincipal/mMenu2/dMenu2' TimeStamp: 19.927
FormatterPlayerAdapter::hasPrepared return false because object = '0' and player = '0'
RuleAdapter::adaptDescriptor for '-1/main/cMenuPrincipal/mMenu2/dMenu2'
RuleAdapter::adaptDescriptor first unsolved descriptor address '0'
FormatterPlayerAdapter::hasPrepared return false because object = '0' and player = '0'
ImagePlayerAdapter::createPlayer '/misc/ncl30/PerguntaForum//img/btn_menu2.png'
ImagePlayerAdapter::createPlayer '/misc/ncl30/PerguntaForum//img/btn_menu2.png' ALL DONE
FormatterPlayerAdapter::createPlayer for '/misc/ncl30/PerguntaForum//img/btn_menu2.png' object = '-1/main/cMenuPrincipal/mMenu2/dMenu2' objectDevice = '0'
ExecutionObject::prepare(-1/main/cMenuPrincipal/mMenu2/dMenu2) 2nd call addEventListener '0xa050548' or '0xa050600'
Player::setScope 'mMenu2'
FormatterLayout::prepareFormatterRegion deviceRegion class is '0'
FormatterScheduler::eventStateChanged 'mMenu2_1' transition '0'
FormatterPlayerAdapter::checkAnchorMonitor can't create TIME NominalEventMonitor for '-1/main/cMenuPrincipal/mMenu2/dMenu2' because next transition = 'inf'
FormatterScheduler::runAction takes '4' ms to start '-1/main/cMenuPrincipal/mMenu2/dMenu2'
FormatterScheduler::runAction event 'service.currentFocus_2' for '-1/main/programSettings/' OVER PROPERTY
ApplicationPlayerAdapter::ApplicationPlayerAdapter(0xa04c4b8)
TimeStamp: 20.911
FormatterPlayerAdapter::~FormatterPlayerAdapter release player component 'LuaPlayer'
ComponentManager::releaseComponentFromObject 'LuaPlayer'
TimeStamp: 20.911
ComponentManager::releaseComponentFromObject 'LuaPlayerAdapter' A linha em vermelho com OVER PROPERTY tem alguma coisa a ver com meu problema? Obrigado.
<bind component="cMenuPrincipal" interface="pMenu1" role="onSelection"/>
<bind component="cMenuPrincipal" role="stop"/>
<bind component="luaMenu1" role="start" />
<bind component="programSettings" interface="service.currentKeyMaster" role="set" >
<bindParam name="value" value="3" /> <!--bindParam name="value" value="luaMenu1" /-->
</bind>
</link> 3 - No elo de retorno do lua setei o focusIndex do item de menu que eu queria com o foco neste caso o menu1, e tudo funcionou. <link id="lVoltaSubMenu1" xconnector="onBeginSetNStopNStartN">
<bind component="luaMenu1" interface="fim" role="onBegin" />
<bind component="luaMenu1" role="stop" />
<bind component="cMenuPrincipal" role="start"/>
<bind component="programSettings" interface="service.currentFocus" role="set" >
<bindParam name="value" value="1" />
</bind>
</link> Segue link para download do problema corrigido, gingadf.com.br/blogGinga/app/MenuResolvido_v0.12.3.rar Vale lembrar que a minha solução só funciona na versão 0.12.3 da GingaVM. Faço uma pergunta: O controle de foco da versão 0.12.4 está aderente a norma? Se sim o que estou fazendo de errado que não consigo mais executar o codigo lua? Grato.