2014-05-09 60 views
2

我最近開始使用monogame,一切都很順利,直到發生這種情況。 我不是很有經驗所以這可能只是看起來愚蠢的,但我已經竭盡所能,這是我唯一的選擇,所以這是我的構造函數:Visual Studio無法識別我的構造函數?

public void qlayer(Vector2 position, Texture2D texture) 
{ 
    this.position = position; 
    this.texture = texture; 
} 

「qlayer」是我的課的名稱,但它一直說:「成員名稱不能和它們的封閉類型相同」,如果我不想構造一個構造函數,這將是有意義的!

爲安全起見,這裏的整個類:

class qlayer 
{ 
    Vector2 position; 
    Point speed; 
    Rectangle hitbox; 
    Texture2D texture; 
    Point currentFrame; 
    int timeSinceLastFrame = 0; 
    int millisecondsPerFrame; 
    bool isFront = true; 
    Point sheetSize = new Point(2,3); 

    public void qlayer(Vector2 position, Texture2D texture, SpriteBatch spritebatch) 
    { 
     this.position = position; 
     this.texture = texture; 

    } 

    enum PlayerAni 
    { 
     left, front, right 
    }; 

    PlayerAni currentAni = PlayerAni.front; 

    public void Update(GameTime gameTime) 
    { 
     timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds; 
     if (timeSinceLastFrame > millisecondsPerFrame) 
     { 
      timeSinceLastFrame = 0; 
      ++currentFrame.X; 
      if (currentFrame.X >= sheetSize.X) 
      { 
       currentFrame.X = 0; 
       ++currentFrame.Y; 
       if (currentFrame.Y >= sheetSize.Y) 
        currentFrame.Y = 0; 
      } 
     } 

     if (Keyboard.GetState().IsKeyDown(Keys.Left) || Keyboard.GetState().IsKeyDown(Keys.A)) 
     { 
      position.X -= 3; 
      currentAni = PlayerAni.left; 
     } 
     else 
     { 
      if (Keyboard.GetState().IsKeyDown(Keys.Right) || Keyboard.GetState().IsKeyDown(Keys.D)) 
      { 
       position.X += 3; 
       currentAni = PlayerAni.right; 
      } 
      else 
      { 
       currentAni = PlayerAni.front; 
      } 
     } 

    } 

    public void Draw(GameTime gameTime, SpriteBatch spritebatch) 
    { 
     spritebatch.Begin(); 
     spritebatch.Draw(texture, 
       position, new Rectangle(currentFrame.X * 76, 
        currentFrame.Y * 54, 
        76, 54), 
       Color.White, 0, Vector2.Zero, 
       1f, SpriteEffects.None, 0); 

     spritebatch.End(); 
    } 
} 
+0

'公共無效qlayer(...)'不具有構造函數。語法錯誤:構造函數看起來像'public qlayer(...)' – elgonzo

+0

刪除'void'關鍵字。 –

回答

10
public void qlayer 

取出字void。構造函數沒有「返回」類型,包括void。你的構造應該是這樣的:

public qlayer(Vector2 position, Texture2D texture) 

和/或

public qlayer(Vector2 position, Texture2D texture, SpriteBatch spritebatch) 
+3

請注意,請將「qlayer」的拼寫修改爲「player」。 – gunr2171

+0

qlayer的拼寫是故意的,但是要感謝:D – Chester

+2

遵循標準的命名約定也是個不錯的主意(與其他語言不同,C#具有非常明確的命名約定)。在這種情況下,您的班級名稱應以大寫字母「Qlayer」或「QLayer」開頭。我真的不知道它是什麼。 http://msdn.microsoft.com/en-us/library/ms229043(v=vs.110).aspx – craftworkgames

相關問題