2012-09-02 1 views
0

Je rencontre un problème lorsque mon menu d'éléments de menu pour un panneau sont recadrés, de sorte que les choses ne vont pas au-dessous du haut du panneau. Tout fonctionne bien, vous ne pouvez pas voir les choses en dessous de ce point. Quand je vérifie où ce panneau est avec ce codeXNA Texture2D bug de recadrage

if (Position.X <= 400) 
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(700, 200), Item1, Item2, Item3, Item4); 
else 
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(100, 200), Item1, Item2, Item3, Item4); 

la première 4 cultures sur le menu entier, puis la 8 prochaine récolte hors tout sauf une partie, et ainsi de suite. Quand je ne le vérifie pas (j'utilise juste la ligne 2), les 8 premiers coupent tout, les 8 suivants coupent toutes les sections sauf une, et ainsi de suite. (Note: chaque section est de 100 pixels de hauteur.)

Voici le code utilisé pour initialiser chaque panneau, et les éléments de menu et de menu:

for (int i = 0; i <= 7; i++) 
{ 
    for (int q = 0; q <= 7; q++) 
    { 
     Panel Panel = new Panel(); 
     Panel.Initialize(TestTextureStill, TestTextureHover, TestTextureActive, new Vector2 (q * 100 + 50, i * 100 + 50), MenuTexture, menuItem1, menuItem2, menuItem3, menuItem4); 
     Panels[i, q] = Panel; 
    } 
} 

menu Panneau

if (Position.X <= 400) 
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(700, 200), Item1, Item2, Item3, Item4); 
else 
    panelMenu.Initialize(TestPanelMenuTexture, new Vector2(100, 200), Item1, Item2, Item3, Item4); 

Ici est le code de dessin:

GraphicsDevice.Clear(Color.CornflowerBlue); 
spriteBatch.Begin(); 
for (int i = 0; i <= 7; i++) 
{ 
    for (int q = 0; q <= 7; q++) 
     Panels[i, q].Draw(spriteBatch); 
} 
spriteBatch.End(); 
base.Draw(gameTime); 

Panel.Draw intérieur()

if (selected) 
    panelMenu.Draw(spriteBatch); 
spriteBatch.Draw(PanelTextureCurrent, Position, null, Color.White, 0f, new Vector2(Width/2, Height/2), 1f, SpriteEffects.None, 0f); 

PanelMenu.Draw intérieur()

spriteBatch.Draw(PanelMenuTexture, Position, null, Color.White, 0f, new Vector2(Width/2, Height/2), 1f, SpriteEffects.None, 0f); 
spriteBatch.Draw(Item1.CurrentTexture, new Vector2(Position.X, 50), null, Color.White, 0f, new Vector2(WidthMI1/2, HeightMI1/2), 1f, SpriteEffects.None, 0f); 
spriteBatch.Draw(Item2.CurrentTexture, new Vector2(Position.X, 150), null, Color.White, 0f, new Vector2(WidthMI2/2, HeightMI2/2), 1f, SpriteEffects.None, 0f); 
spriteBatch.Draw(Item3.CurrentTexture, new Vector2(Position.X, 250), null, Color.White, 0f, new Vector2(WidthMI3/2, HeightMI3/2), 1f, SpriteEffects.None, 0f); 
spriteBatch.Draw(Item4.CurrentTexture, new Vector2(Position.X, 350), null, Color.White, 0f, new Vector2(WidthMI4/2, HeightMI4/2), 1f, SpriteEffects.None, 0f); 

Si vous avez besoin toute autre chose, s'il vous plaît laissez-moi savoir!

+0

Aussi, après un peu de test, je pense que l'erreur se produit quelque part dans l'initialisation du menu, OU, pendant le dessin. Je ne peux tout simplement pas comprendre ce qui ne va pas. – Halleflux

+0

Ok, je pense que je sais quel est le problème, je n'ai juste aucune idée de comment le réparer. Rien à droite du panneau sélectionné n'est dessiné ou ci-dessous. Tout ce qui est au-dessus est cependant. – Halleflux

+0

Problème résolu. J'avais juste besoin de dessiner un peu différemment. – Halleflux

Répondre

1

Déplacez le dessin du menu & éléments pour que tous les panneaux aient été dessinés. C'est parce que les panneaux ont chevauché le menu, le faisant disparaître.

Questions connexes