Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Algoritmos  Como faço para redesenhar a tela apenas quando houver uma ação do usuario?
Desabilitado Anterior
 
Próximo Próximo
Nova Entrada 23/5/2008 19:38
Resolvido
  felipess
30 tópicos
8th Level Poster


Como faço para redesenhar a tela apenas quando houver uma ação do usuario? 

Galera, sou iniciante em C#. O que quero fazer é que a tela só seja redesenhada quando houver uma ação do usuario e tentei fazer uma gambiarra aqui, apenas para teste, e nao funcionou. eu fiz o seguinte: dentro do metodo Draw da classe Game1, eu chamo o metodo desenhar do meu objeto, e ai tem uma variavel booleana que seu valor é alterado quando há um clique do mouse, sendo que o desenho nao ficar sempre na tela, a não ser que eu fique sempre desenhando...

enfim alguém sabe como eu podia resolver esse problema??

 

vlw!!


[]´s Felipe Sampaio
 
Nova Entrada 23/5/2008 21:30
  lucianoJose
195 tópicos
Iniciante


Re: Como faço para redesenhar a tela apenas quando houver uma ação do usuario? 

 

Na penúltima linha você quis dizer: "...sendo que o desenho não fica sempre na tela, a não ser que eu fique sempre desenhando..." ?

Em seu teste, você tentou algo do tipo:

 

public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
 
        bool podeDesenhar;

        Texture2D imagem;

        MouseState estadoAtual;
        MouseState ultimoEstado;
 
        Color cor = Color.White;
        Vector2 posicao = Vector2.Zero;
 
        ...
 
        ...
 
        protected override void Update(GameTime gameTime)
        {
            this.estadoAtual = Mouse.GetState();
 
            if (this.estadoAtual.LeftButton == ButtonState.Pressed
                && this.ultimoEstado.LeftButton == ButtonState.Released)
            {
                if (podeDesenhar == true)
                {
                    podeDesenhar = false;
                }
                else
                {
                    podeDesenhar = true;
                }
            }           
 
            this.ultimoEstado = this.estadoAtual;
 
            base.Update(gameTime);
        }
 
        protected override void Draw(GameTime gameTime)
        {
            graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
 
            if (podeDesenhar)
            {
                this.spriteBatch.Begin();
                this.spriteBatch.Draw(imagem, posicao, cor);
                this.spriteBatch.End();
            }
            base.Draw(gameTime);
        } 

    }

 

Se não resolveu seu problema, libera, por favor, o seu código do teste.

 


@lucianoJoseBr My Blog: http://lucjose.wordpress.com
 
Nova Entrada 23/5/2008 22:40
  felipess
30 tópicos
8th Level Poster


Re: Como faço para redesenhar a tela apenas quando houver uma ação do usuario? 

Luciano, muito bom. Respondeu e ja tirou outra dúvida minha que era, a de como pegar o estado do mouse.

 

Obrigado.

Em breve mais duvidas...

 


[]´s Felipe Sampaio
 
Nova Entrada 28/5/2008 10:29
  jalf
168 tópicos
Iniciante




Re: Como faço para redesenhar a tela apenas quando houver uma ação do usuario? 

Em jogos, você SEMPRE tem que ficar desenhando tudo  Não é como uma aplicação comum.


Microsoft Most Valuable Professional e Administrador do Sharpgames. jalfbr's Gamercard
 
Desabilitado Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Algoritmos  Como faço para redesenhar a tela apenas quando houver uma ação do usuario?
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso