简体   繁体   English

如何跳过和接受数组

[英]How skip and take in array

Basically what I want to do is show 16 items to screen and extra ones add to new page. 基本上我想做的是在屏幕上显示16个项目,并将多余的项目添加到新页面。

16 items are are shown per page and extra by 16 are separated ob other screens. 每页显示16个项目,其他屏幕分开显示16个项目。

I'm using 2D array to display/show to screen 我正在使用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);
                    }
                }
            }
        }
    }

In this code spritebatch.draw(item.texture dose not exit) if I replace in for each loop items with result. 在这段代码中,如果我用结果替换每个循环项,则spritebatch.draw(item.texture dose not exit)

Example

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);
                    }

                }
            }
        }
    }

Here it show me a all items in the list. 在这里,它显示了列表中的所有项目。 As show in this picture 如图所示 忙碌的猫

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

First problem you are not using Take . 您没有使用Take第一个问题。 Second problem in your skip you should have itemsPerPage * (CurrentPage-1) , because if you are on first page you should not skip any records so: (1-1)*ItemsPAerPage = 0. 跳过的第二个问题是应该具有itemsPerPage * (CurrentPage-1) ,因为如果您位于首页上,则不应跳过任何记录,因此: (1-1)*ItemsPAerPage = 0。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM