Méthode qui utilise "SpriteEffects.FlipVertically"

Signaler
Messages postés
8
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 mai 2010
-
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
-
Bonjours à tous, je pense que ma façon de procéder est correcte, seulement rien ne ce passe. Je dois effectuer l'affectation d'un changement de paramètre dans l'affichage d'un sprite ("Droite"), et qui doit normalement effectuer un flip sur l'axe vertical, sous l'effet d'un clic sur un second sprite ("bouton"). Au départ, le sprite "Droite" est affiché sans changement apparent, et doit prendre, après le clic sur le "bouton", SpriteEffects.FlipVertically en paramètre.

---------------------------------------------------------------------------
Dans la classe principale :
---------------------------------------------------------------------------
protected override void Initialize()
{

Droite = new Sprite(new Vector2(600, 100), null, Color.White, 0, new Vector2(66, 49), SpriteEffects.None);

boutonSymetrie = new Sprite(new Vector2(100, 600), null, Color.White, 0, new Vector2(20, 200), SpriteEffects.None);

base.Initialize();

}

protected override void Update(GameTime gameTime)
{

if (MState.LeftButton == ButtonState.Pressed)
boutonSymetrie.symetrie(MState, Droite, SpriteEffects.FlipHorizontally);

base.Update(gameTime);
}

---------------------------------------------------------------------------
Dans le classe Sprite :
---------------------------------------------------------------------------
SpriteEffects effect = SpriteEffects.None;

public SpriteEffects Effect
{
get { return effect; }
set { effect = value; }
}

public Sprite(Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, SpriteEffects effect)
{
this.position = position;
this.sourceRectangle = sourceRectangle;
this.color = color;
this.rotation = rotation;
this.origin = origin;
this.effect = effect;
}


public void symetrie(MouseState MState, Sprite formePosDepart, SpriteEffects Effect)
{
if (MState.X >= position.X && MState.X <= (position.X + texture.Width) &&
MState.Y >= position.Y && MState.Y <= (position.Y + texture.Height))
{
formePosDepart.Effect = SpriteEffects.FlipVertically;

}
}

5 réponses

Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
11
Salut,
alors déjà si dans la méthode symetrie il y'a un paramètre SpriteEffects, on va s'en servir donc tu changes cette ligne :

formePosDepart.Effect = SpriteEffects.FlipVertically;


en :

formePosDepart.Effect = Effect;


et enfin où est la méthode Draw qui avec un spritebatch permet d'afficher le sprite avec toutes ses données ?
Messages postés
8
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 mai 2010

La voici, j'ai zappé de la mettre ;)

public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, position, sourceRectangle, color, rotation, origin, Vector2.One, effect, 0);
// spriteBatch.Draw(texture, position, sourceRectangle, Color.White, rotation, Vector2.Zero, Vector2.One, SpriteEffects.None, 0);
}

J'ai remplacer la ligne de code par celle que tu m'as indiqué. Rien ne change. Je ne comprend vraiment pas d'ou vient le problème. Je m'aide du Développement XNA en pdf.
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
11
OKi la réponse est simple dans la méthode Draw, tu mets SpriteEffects.None, remplace ce terme par effect.
Messages postés
8
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 mai 2010

Mince, les deuxième spritebatch.Draw était en commentaire, c'est bien le premier qui est utilisé et donc effect est déjà présent. Cependant, cela peut provenir de l'initialisation du sprite "Droite" dans la classe principale non ? :

Droite = new Sprite(new Vector2(600, 100), null, Color.White, 0, new Vector2(66, 49), SpriteEffects.None);

Bizard pourtant tout à l'air d'être correcte dans la manière de procéder..
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
11
Je vais t'envoyer un MP avec mon email. Envoie moi ton projet que je vois de plus près parce que là, c'est un peu difficile de trouver...