如何仅显示数组中包含的特定数量的项目?

时间:2016-01-20 06:35:48

标签: arrays actionscript-3

我在AS3中获得了此代码

var products:Array;
var list:Sprite = new Sprite();
function complete(e:Event):void {
    addChild(list);
    products = JSON.parse(loader5.data) as Array;
    for(var i:int = 0, l:int = products.length - 1; l >= 0; i++, l--){
    createListItem(i, products[l]);
        if(products.length >=10){
            next.visible=true;
        }
}
    showList();
}

它显示我的表数据库中包含的所有产品的列表。

现在我添加了if(products.length >=10){并且它正在运行。

我想添加

`if(products.length >=10){` 
What shoud I put here for showing only 10 products. 
next.visible=true;
next.addEventListener(MouseEvent.CLICK, show10Next);
}

function show10Next(event:MouseEvent){
What should I put here for showing the 10 next products ? 
}

-------------------------------------------- ----------------------------- 修改

Aaron回答说,这就是我的所作所为:

function complete(e:Event):void {
    addChild(list);
    products = JSON.parse(loader5.data) as Array;
    feedbackText.text = "complete";
    showNext() ;
}
function showNext():void {
    var currentNumShowing:int = list.numChildren;
    var nextNumShowing:int = Math.min(currentNumShowing + 10, products.length);
    for(var i:int = currentNumShowing; i < nextNumShowing; i++){
        createListItem(i, products[i]);
    }
    next.visible = nextNumShowing < products.length;
}

现在我该如何添加next.addEventListener(MouseEvent.CLICK,next10);

(因为我无法next.addEventListener(MouseEvent.CLICK,showNext);因为showNext不是MouseEvent ...)

其次,我的代码显示了从结尾到开头的产品(for(var i:int = 0, l:int = products.length - 1; l >= 0; i++, l--){。我怎么能保留它?

我试过了:for(var i:int = currentNumShowing, l:int = products.length - 1; i < nextNumShowing;l >= 0; i++, l--){ 但是它没有工作(错误1084期待分号之前的右分数并且在右分词之前期待分号)

1 个答案:

答案 0 :(得分:0)

如果您要做的只是从products数组一次显示10,您可以创建一个函数来显示数组的切片,如下所示:

const itemsPerPage:uint = 10;

var currentPageIndex:int = 0;

function displayPage(pageIndex:int):void {
    list.removeChildren();

    currentPageIndex = pageIndex;

    var firstItemIndex:int = pageIndex * itemsPerPage;
    var lastItemIndex:int = Math.min(firstItemIndex + itemsPerPage, products.length - 1);
    for(var i:int = firstItemIndex; i <= lastItemIndex; i++){
        createListItem(i - firstItemIndex, products[i]);
    }
    next.visible = lastItemIndex < products.length - 1;
}

然后,从您的complete处理程序,您可以显示第一页,如下所示:

displayPage(0);

您的next按钮可以有一个显示currentPageIndex + 1的点击处理程序,如下所示:

next.addEventListener(MouseEvent.CLICK, nextClick);
function nextClick(e:MouseEvent):void {
    displayPage(currentPageIndex + 1);
}

同样,您可以displayPage(currentPageIndex - 1)返回页面。

如果您想要从数组的结尾显示,我建议您只reverse itproducts.reverse()

请注意,如果您的数据很大,只需加载JSON可能需要一段时间。在这种情况下,您应该将JSON数据本身分页为一次只加载10