我有一点问题。我有以下功能:
private function elementsLoadedHandler(e:Event):void
{
elementContainer=new Sprite();
var currentItem:uint;
for (var i:uint=0; i < numberItems; i++)
{
var element:Element=new Element(elementModel.elements[currentItem]);
element.x=xPos;
element.alpha=.5;
addChild(element);
xPos+=130;
currentItem++;
elementsArr.push(element);
if (currentItem >= elementModel.elements.length)
{
currentItem == 0;
}
}
movementTimer=new Timer(_movementSpeed, 0);
movementTimer.addEventListener(TimerEvent.TIMER, moveItems);
movementTimer.start();
layout();
}
这基本上所做的是将数组中的元素放在彼此相邻的舞台上。现在我希望他们一起向右移动。我这样做如下:
private function moveItems(e:TimerEvent):void
{
var alphaVal:Number=.5;
movementTimer.delay+=25;
for (var i:uint=0; i < elementsArr.length; i++)
{
xPos=elementsArr[i].x + 130;
TweenLite.to(elementsArr[i], .5, {x: "130"});
if (elementsArr[i].x > _width)
{
elementsArr[i].x=0;
}
}
}
所以我将项目向右移动,然后检查最后一个项目是否在舞台之外,如果是,我将其位置重置为 0,因此它回到左侧,这样我就有了一个连续循环的项目移动向右。问题是我这样做的方式,我每秒执行 11 个补间,这使它变得迟钝。我正在考虑将物品放入容器中并对容器进行补间,但那时我似乎没有得到很好的连续流动。有谁知道如何解决这个问题?
此外,在第一个函数中,您可以看到我正在执行 for 循环。该numberItems
变量表示 11,但其中的项目数量elementModel.elements
仅为 6,因此对于其他 5 个元素,我只需再次从数组中选择前 5 个项目。问题是,当我跟踪这些项目时,它给了我 0。如何从数组中多次获取项目而不覆盖它的先前版本?