У меня есть небольшая проблема.у меня есть следующая функция:
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. Как я могу взять элементы из массива несколько раз, не перезаписывая предыдущую версию?