2010-10-28 6 views
0

Dans mon fichier Flash, j'ai une roue. L'utilisateur est capable de faire tourner la roue en utilisant les flèches pour passer au segment suivant (pensez à 20 images attachées l'une à l'autre formant la circonférence de la roue). WheelAccélération et décélération dans AS3

En cliquant sur les flèches initie ce code:

protected function rotate():void 
     { 
      var rotateTo:Number = (-360/numItems) * currentItem + 90; 
      TweenLite.to(planesHolder, 1, { rotationY:rotateTo, ease:Quint.easeInOut }); 
     } 

Cependant, ce que je veux être en mesure de faire est, cliquez et faites glisser pour faire tourner la roue, avec l'accélération et la décélération et même régler sur la image la plus proche lorsque la roue se réduit à une certaine vitesse. Je n'ai aucune idée de comment procéder: je vais devoir détecter une position avant et après le curseur et traduire cela en une vitesse pour la roue qui décélère alors avec le temps et qui détecte aussi quelle image est la plus proche à un certain niveau. accélérer et "enclencher", les deux défiler vers le haut et vers le bas. (Ça ne va affecter l'axe Y)

Toute aide serait appréciée

Répondre

1

Alors que la souris est vers le bas, dans un contrôle ENTER_FRAME pour le courant de décalage à la position précédente:

private function enterFrameHandler(e:Event) 
{ 
    offset = oldy - oldMousePosition; 
    oldy = oldMousePosition 
} 

Cela devrait vous donner la vitesse actuelle. (obivously, pour la roue c'est "wheel.rotation + = offset/some_value_to_slow_it_down" dans un enterFrame encore).

Pour introduire "assouplissement", vous pouvez utiliser une variable de friction.

à nouveau, en cas enterFrame:

offset *= .8; 

puis pour accrocher à l'image suivante, vérifier la vitesse de votre vitesse actuelle est; si elle est inférieure à une certaine tolérance, réglez la vélocité sur 0 et ramenez-la à la valeur la plus proche. (vous l'avez deviné, dans un événement enterFrame à nouveau

if(offset < 1) 
{ 
    offset = 0; 
    //calculate the nearest value of the wheel 
    //tweenlite right over there 
} 
Questions connexes