我正在拉一个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;
}
}
答案 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的长度属性,因此再调用该函数将不会产生任何效果。