Scene em Background

3 Respostas   178 Visualizações

0 Membros e 1 Visitante estão vendo este tópico.

Lima

Tópico criado em: 11/07/2016 às 03:30 - Última modificação por King Gerar em 11/07/2016 às 08:41

Olá, como se faz uma scene que esteja sempre ativa?

Geraldo de Rívia

  • Mito
  • *
  • Posts: 4452
  • Ouros: 3887
  • O vento está sibilando.
  • Medalhas Vencedor do Protótipo Premiado Participantes do Maps Together 2
Resposta 1: 11/07/2016 às 08:49

Em qual engine?

Em todo caso, não sei tão bem nas anteriores, mas na MV, me parece que as Scenes ficam organizadas em
uma array. Quando você está no mapa, a array fica assim: scenes = [Scene_Map]. Quando tu chama o menu,
ela acrescenta esta scene à array, ficando assim: scenes = [Scene_Map, Scene_Menu]. E se tu chamar a tela
de itens: scenes = [Scene_Map, Scene_Menu, Scene_Item]. Sendo assim, o maker irá mostrar a scene que
corresponde ao último índice da array, no caso, a Scene_Item. Ao sair da scene, ela é removida da array.

Desse modo, acredito que não há como fazer duas scenes trabalharem simultaneamente. Para fazer algo que
tu queira exibir em mais de uma Scene, ou tu faz em todas que quer, ou tu faz na Scene_Base (assim tu precisaria
criar somente uma vez) e chama a função nas Scenes que quer.

Isso baseado no que entendi programando até então.

Brandt

Resposta 2: 11/07/2016 às 10:37 - Última modificação por Masked em 11/07/2016 às 10:38

Você não precisa de uma scene que esteja sempre ativa, porque não tem nenhuma situação em que duas scenes rodando ao mesmo tempo te traga alguma vantagem :B (imagina executar a Scene_Map e Scene_Battle ao mesmo tempo...)

Se você quer que um objeto esteja sendo atualizado a todo momento, você usa a Scene_Base, como o Gerar disse, ou coloca o objeto numa variável global e atualiza ele sempre que precisar (se for a todo momento, então use a Scene_Base).
Se você está usando o MV, também pode usar o Javascript e colocar uma função que atualize esse objeto usando setInterval (ou requestAnimationFrame, para atualizar uma vez por frame):
Código: [Selecionar]
var objeto = {a:1, b:2, c:3};
function atualiza() {
  objeto.a += 1;
  objeto.b += 2;
  objeto.c += 3;
  requestAnimationFrame(atualiza);
}
requestAnimationFrame(atualiza);

Note que o requestAnimationFrame chama a função uma vez só, então você tem que chamar ela de novo de dentro dela mesma.
~ Masked

Lima

Resposta 3: 11/07/2016 às 13:33

Obrigado pessoal! :D

Isso do requestAnimationFrame(atualiza); não conhecia é bastante útil xp