|
 | | |
|
| |  |   |  |  | |  |  | |  |  | |  |  | |  | |
 | | | |
Ola a todos,
Eu estou com um problema meio estranho pra mim, mas que pode ser bastante claro para alguem.
É o seguinte, eu tenho uma classe onde eu faço toda a parte grafica, então quando quero por algo na tela eu apenas chamo um metodo dela, isso funciona perfeito dentro do metodo Draw(), porem quando tento isto no Update(), não aparece nada.
Exemplo
Update()
...
grafico.Escrever("teste"); // Não funciona!!!
}
Draw(){
...
grafico.Escrever("teste"); //Funciona!!!
}
Alguem sabe o porque?? e se tem solução??
Obrigado
|
|
|
|  |  | | | |
jkleber escreveu
Ola a todos,
Eu estou com um problema meio estranho pra mim, mas que pode ser bastante claro para alguem.
É o seguinte, eu tenho uma classe onde eu faço toda a parte grafica, então quando quero por algo na tela eu apenas chamo um metodo dela, isso funciona perfeito dentro do metodo Draw(), porem quando tento isto no Update(), não aparece nada.
Exemplo
Update()
...
grafico.Escrever("teste"); // Não funciona!!!
}
Draw(){
...
grafico.Escrever("teste"); //Funciona!!!
}
Alguem sabe o porque?? e se tem solução??
Obrigado
|
oi kleber, isso não é um problema não...
Imagina se você pudesse calcular, atualizar valores, checar colisão e renderizar objetos tudo num método só? Seria complicado codificar um jogo né? Seria um macarrão total...
O modelo de aplicação do XNA foi feito assim, estabelecendo essa separação entre o que vai ser atualizado no jogo e o que vai ser renderizado; o que é pra renderizar na tela, deve ser feito no método Draw, e o resto(atualizaçoes de lógica, checagem de colisão, etc) devem estar no método Update.
Atualizar e Renderizar são tarefas distintas que desempenham papéis diferentes, logo é melhor que sejam feitos em métodos diferentes. Assim como ler conteúdo que será usado em seu jogo, é uma função diferente de atualizar e renderizar na tela, logo, temos um método específico chamado de "LoadContent" aonde nós lemos o conteúdo que será usado em nosso jogo.
Simplificando:
Se um objeto tem um método chamado de Voar, o que vc espera que o objeto faça quando o método Voar for invocado?
É legal que eu invoque o método Voar e o objeto além de voar ele comece a gritar? O bom é que esses 2 comportamentos estejam em locais diferentes né?
Sobre o seu código, minha sugestão é o seguinte: defina uma flag chamada podeEscrever, por exemplo.
No método Update você vai setar o valor da variável podeEscrever para true ou false.
Daí então, no método Draw, você faz assim:
if(podeEscrever == true)
{
grafico.Escrever("teste");
}
abraços @lucianoJoseBr
My Blog: http://lucjose.wordpress.com |
|
|
|  |  | | | |
Obrigado pelas dicas e exlicações, é que o meu problema é o seguinte:
No meu update(), chega uma hora onde eu uso um thread.sleep(x), então eu preciso que neste tempo de espera ele apresente um texto, como por exemplo "Carregando...", então ficaria mais ou menos assim:
update(){
...
grafico.escrever("Carregnado...");
thread.sleep(x);
}
Então se eu fizer a sua sugestão vai acontecer que ele só vai escrever na tela depois que passar pelo Sleep().
Até agora não consegui solução.
Obrigado pela atenção |
|
|
|
|  |  | |  |  | |  |  | |  |
|
|
| | |
|
|
|  |
 |  |
|