2016-12-22 78 views
1

基本上我想要做的是顯示16項到屏幕和額外的添加到新頁面。如何跳過並採取陣列

16個項目是每頁顯示,另外16個是分開的其他屏幕。

我使用2D陣列以顯示/顯示篩選

Vector2 Pos; 
int ItemsPerpage = 16; 
int CurrentPage; 

public void Draw(SpriteBatch spriteBatch) 
{ 
     var result = items.Cast<double>().Skip(ItemsPerpage * CurrentPage).Skip(ItemsPerpage); 

     foreach (var item in items) 
     { 
      for (int X = 0; X < Columns; X++) 
      { 
       for (int Y = 0; Y < Rows; Y++) 
       { 
        int DrawX = (int)pos.X + (X * (slotWight + 2)); 
        int DrawY = (int)pos.Y + (Y * (slotWight + 2)); 

        if(items[X,Y] != null) 
        { 
         spriteBatch.Draw(items[X,Y].Texure, new Rectangle(DrawX, DrawY ,32, 32), new Rectangle(0, 0, 64, 64), Color.White); 
        } 
       } 
      } 
     } 
    } 

在此代碼spritebatch.draw(item.texture dose not exit)如果我在替換用結果每個環的物品。

public void Draw(SpriteBatch spriteBatch) 
{ 
     var result = items.Cast<double>().Skip(ItemsPerpage * CurrentPage).Skip(ItemsPerpage); 
     foreach (var item in result) 
     { 
      for (int X = 0; X < Columns; X++) 
      { 
       for (int Y = 0; Y < Rows; Y++) 
       { 
        int DrawX = (int)pos.X + (X * (slotWight + 2)); 
        int DrawY = (int)pos.Y + (Y * (slotWight + 2)); 
        if(items[X,Y] != null) 
        { 
         spriteBatch.Draw(item.Texure, new Rectangle(DrawX, DrawY ,32, 32), new Rectangle(0, 0, 64, 64), Color.White); 
        } 

       } 
      } 
     } 
    } 

這表明我的列表中的所有項目。 作爲顯示在這張照片a busy cat

+0

你想跳過走,但你只是用'Skip'你的代碼。我想象第二個'Skip'應該是一個'Take'。 – Abion47

+0

另外,你得到的錯誤是因爲在你操作''double''之前,''items''被加入到'double'類型的集合中,'double'沒有名爲'Texture'的字段。任何理由做演員? – Abion47

+0

我只是在例子中做的,只是它顯示的數量和以前一樣。 如果我用結果替換項目列表,則無法看到「item.texture」。 (紋理,矩形(int,int,int,int),Color.White);'我需要在第一個參數中設置紋理。我在第一個矩形中設置了繪畫的位置,第二個矩形用於繪製哪個部分以及在哪裏繪製。 所以,如果我有spritesheet我可以使用特定的精靈繪製使用第二個矩形。 – user3768433

回答

2
var result = items.Cast<double>().Skip(ItemsPerpage * (CurrentPage-1)).Таке(ItemsPerpage); 

第一個問題你不使用Take。在跳過第二個問題,你應該有itemsPerPage * (CurrentPage-1),因爲如果你是第一頁上你不應該跳過任何記錄,以便:(1-1)*ItemsPAerPage = 0

+0

我用過..我在這裏打字...同樣的,我忘了改變它。 仍......這是一個錯誤。 但items.texture = null的一部分... 在PlayerBackpack中有一個項目宣佈了texure和它是什麼......我怎麼現在得到一個null? – user3768433

+0

@ user3768433 SO的政策是爲每個帖子提出一個問題。您可以提出新的問題,但可能因爲重複而關閉。檢查這個問題:http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it – mybirthname

+0

這假定頁面以'1'作爲第一個列出頁。如果第一頁被表示爲'0',那麼這段代碼將會得到錯誤的頁面。 – Abion47