No post anterior (https://vemfazermatematicaegames.blogspot.com/2018/09/appinventor2-criando-seu-aplicativo-de.html) falamos sobre como usar a opção Legenda e Criar Listas para obter um aplicativo de narrativas. Porém, você deve ter observado, que é necessário criar muitas telas repetidas por conta dos diálogos entre personagens e isso acaba impactando no peso do aplicativo. O que vamos trabalhar nesse post, é uma economia de código, aonde uma mesma tela sirva para diversos diálogos e em momentos diferentes da narrativa.
Partimos do problema principal: as legendas se ativarem após clicar em um determinado botão, sendo que precisamos de uma estratégia para que conforme o fluxo da narrativa ative apenas um botão (responsável por uma sequência de diálogos) e os demais fiquem inativos. Observe a programação abaixo:
Usando o comando de inicialização da tela (Quando nomedatela .Inicializar) temos o bloco laranja que ajusta a variável global (sempre zerada) para um valor armazenado previamente obtido da tela anterior com o uso do TinyDB (se você quiser mais informações de como funciona o armazenamento do TinyDB, consulte: https://vemfazermatematicaegames.blogspot.com/2018/06/appinventor-2-construindo-um-placar.html). Em seguida, é testado uma sequência de Se Então, com base na variável global TelaGeral (que agora assumiu o valor pego do TinyDB). No decorrer de cada teste de Se Então são ativados/desativados os botões relacionados ao valor de teste, somando-se um novo valor a variável global TelaGeral e armazena-se no TinyDB para o teste na próxima tela. Obteremos o seguinte fluxograma abaixo (exemplo):
Resumindo, temos diálogos entre três personagens distintos, onde um deles (Personagem 01) tem mais de um diálogo e cada vez que recebe o valor 00 se refere a o primeiro diálogo (ativa o botão 01) e se receber 02 que é a soma do valor dos diálogos 01 e 02 ele irá habilitar o terceiro diálogo (ativa o botão 02) da mesma tela 01.
Por fim, não se esqueça que cada valor de entrada é preciso ativar/desativar botões diferentes, que sempre na primeira tela, o TinyDB deve ser igualado ao valor inicial, mas com a presença da variável global listada, pois ela é necessária para as posteriores interações e de construir listas de Falas diferentes para cada um dos botões ativos. Recomendo dar uma olhada no projeto finalizado em: [EM BREVE].
Por hoje é isso, deixe nos comentários suas opiniões e dúvidas sobre o sistema. Até a próxima.