2011-02-15 2 views
0

J'ai un peu un problème. i ont la fonction suivante:problème avec tweenlite

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(); 
     } 

Qu'est-ce que ce fait est basiquement éléments place d'un tableau sur la scène à côté. Maintenant, je veux qu'ils se déplacent vers la droite ensemble. Je le fais comme suit:

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; 
       } 
      } 
     } 

Je suis donc déplacer les éléments à droite puis-je vérifier si le dernier élément est en dehors de la scène, le cas échéant réinitialiser sa position à 0 il remonte à la gauche et de cette façon j'ai une boucle continue d'éléments se déplaçant vers la droite. Le problème est que la façon dont je le fais, j'ai 11 tweens en cours d'exécution par seconde, ce qui le rend laggy. Je pensais à mettre les articles dans un conteneur et tweening le conteneur, mais je ne semble pas obtenir un flux continious agréable alors. Quelqu'un sait-il comment résoudre ceci?

En outre, dans la première fonction, vous pouvez voir que je fais une boucle for. la variable numberItems représente 11, mais le nombre d'éléments dans elementModel.elements est seulement 6, donc pour les 5 autres éléments, je choisis à nouveau les 5 premiers éléments du tableau. Le problème est que lorsque je trace ces éléments, il me donne 0. Comment puis-je prendre des éléments d'un tableau plusieurs fois sans écraser la version précédente de celui-ci?

Répondre

0

Vous n'avez pas besoin d'utiliser tween Lite pour cela. Tout ce que vous devez faire dans la fonction moveItems est de déplacer un peu chaque élément (elemtsArr [i] .x + = 5, par exemple) et si elementsArr [i] .x> _width, remplacez-le par un 0.

Quelque chose comme ça devrait fonctionner:

function moveItems(e:TimerEvent):void 
{ 
    for (var i:int = 0; i < elemntsArr.length; i++) 
    { 
     elementsArr[i].x += 5; 
     if (elementsArr[i].x > _width) 
      elementsArr[i].x = 0; 
    } 
}