在AS3中停止并启动for循环?

时间:2011-02-06 18:12:50

标签: actionscript-3 for-loop

我正在拉一个xml并使用for循环来创建一个拇指列表。这个列表将会很长,但我一次只能加载25个拇指,因此下一个25只会在用户点击按钮时加载。我知道如何在函数中设置for循环,但我无法弄清楚如何分解它将停止和启动的循环。我想我每次按下一个按钮就会调用该函数,并且循环将在接下来的25个位置停止。

我想也许我可以将其他变量替换为for();但我试过的一切打破了它。我试着拉var i:int = 0;因为函数可以设置i,但我想我不清楚for循环是如何工作的。

我在做什么:

function loadarticleHeadlines():void
{
    for (var i:int = 0; i < egarticleXml.articlelist.articleitem.length(); i++)
    {
        vsThumb = new articleBox();
        vsThumb.alpha = 0;
        vsThumbLoader = new Loader();
        vsThumbLoader.load(new URLRequest(egarticleXml.articlelist.articleitem[i].articlethumbnail));
        articleListContainter.addChild(vsThumb);
        vsThumb.articleImage.addChild(vsThumbLoader);
        vsThumb.articleTitle.text = egarticleXml.articlelist.articleitem[i].articletitle;
        titleAutosize(vsThumb.articleTitle);
        vsThumb.x = next_x;
        next_x += 260;
        articlevsThumb[i] = vsThumb;
        //vsThumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showBox);
        vsThumb.clickBtn.buttonMode = true;
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个。

var xml:Array = [];
for(var i:int=0;i<100;i++)
{
    xml.push(i);
    //array from 0-99
}
var xmlPosition:int = 0;
grabXML(xmlPosition);
//25
grabXML(xmlPosition);
//50
grabXML(xmlPosition);
//75
grabXML(xmlPosition);
//100

function grabXML(position:int):void
{
    for(position;position<xml.length;position++)
    {
        trace(xml[position]);
        //yields 0-24, 25-49, 50-74, and 75-99
        if(position === xmlPosition + 25)
        {
            break;
        }
    }
    xmlPosition += 25;
}

一旦参数比原始值(xmlPosition)多25,我就会破坏。由于xmlPosition大于xml的长度属性,因此再调用该函数将不会产生任何效果。