少し問題があります。私は次の機能を持っています:
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 にリセットして左に戻します。このようにして、アイテムが移動する連続ループがあります。右の方へ。問題は、私のやり方では、1 秒あたり 11 のトゥイーンが実行されているため、遅延が発生することです。アイテムをコンテナに入れてコンテナをトゥイーンすることを考えていましたが、そのときは連続した流れが得られないようです。これを解決する方法を知っている人はいますか?
また、最初の関数では、for ループを実行していることがわかります。numberItems
変数は 11 を表しますが、アイテムの数はelementModel.elements
6 しかないため、他の 5 つの要素については、配列から最初の 5 つのアイテムを再度選択します。問題は、これらの項目をトレースすると 0 になることです。以前のバージョンを上書きせずに、配列から項目を複数回取得するにはどうすればよいですか?