2016-11-11 46 views
0

我失去了什么这里我雪碧心不是画在屏幕上XNA

Sprite类

private Texture2D m_tex; 
    public Rectangle rect; 
    private bool m_travellingRight; 
    private int x_pos; 

    //constructor 
    public LightSaber(Texture2D tex, int xpos, int ypos) 
    { 
     m_tex = tex; 
     rect = new Rectangle(xpos, ypos, m_tex.Width, m_tex.Height); 
     m_travellingRight = true; 
    } 

    public void drawme(SpriteBatch sb) 
    { 
     if (m_travellingRight) 
      sb.Draw(m_tex, rect, Color.White); 
     else 
      sb.Draw(m_tex, rect, null, Color.White, 0, Vector2.Zero, SpriteEffects.FlipHorizontally, 0); 
    } 

    public void updateme(GamePadState pad) 
    { 
     x_pos = rect.X; 
     if (pad.ThumbSticks.Left.X < 0 && x_pos > 0) 
     { 
      m_travellingRight = false; 
      rect.X -= 4; 
     } 
     else if (pad.ThumbSticks.Left.X > 0 && x_pos < 800 - rect.Width) 
     { 
      m_travellingRight = true; 
      rect.X += 4; 
     } 
    } 
} 

}

的Game1:

LightSaber lightSaber; 

lightSaber = new LightSaber(Content.Load<Texture2D>("Textures\\Lightsaber"), 300, 500); 

lightSaber.drawme(spriteBatch); 

感谢您的帮助。

+0

其C#是的哈哈我的错误 – LawrenceB

回答

0

我错过了Game1.class中的很多代码,如果你错过了任何东西,很高兴看到整个类看起来很好。

所以现在,我给你一些提示:

-I看不到Game1类的任何spritebatch.begin()或spritebatch.End(),因为它是如此缩短了,那些应该被要求为了画什么。

- 您也可以尝试在应该绘制纹理的那一刻放置断点。并检查它是否真的吸引它,或者至少可以达到它。

-Another可能性,它绘制的精灵,但它的位置是出界,(游戏窗口外),我更喜欢把0的位置,直到我敢肯定,它可以绘制纹理

- 我更喜欢在任何if语句中使用'{}',即使它是一行代码,它使代码更清晰并避免错误,作为新手程序员,我发现这是需要的做。远不止优化。

这就是现在,希望这有助于