Search Tutorials
Friction and Elasticity (cont.)Finally, we want to back and forth until we reach the position (elasticity), which is done by changing the way we calculate the distance v. Here, we take the previous value of v plus 100-x, which we divide by another constant myRatio (this is simply equivalent to another speed). This is divided by myFriction. Hereby, we accomplish that even though the distance is 0, we will still move either back or forward, because of the previous speed. We are just adding the previous speed to the current speed; the code looks like this:
i = 1;
for (i; i<=myLength; i++) {
if (i == 1) {
trail1.speedX = (myTrails[i].speedX+(_xmouse+letterSpace-myTrails[i].xPos)/myRatio)/myFriction;
trail1.speedY = (myTrails[i].speedY+(_ymouse-myTrails[i].yPos)/myRatio)/myFriction;
trail1.xPos = myTrails[i].xPos+myTrails[i].speedX;
trail1.yPos = myTrails[i].yPos+myTrails[i].speedY;
} else {
myTrails[i].speedX = (myTrails[i].speedX+(myTrails[i-1].xPos+letterSpace-
myTrails[i].xPos)/myRatio)/myFriction;
myTrails[i].speedY = (myTrails[i].speedY+(myTrails[i-1].yPos-myTrails[i].yPos)/myRatio)/myFriction;
myTrails[i].xPos = myTrails[i].xPos+myTrails[i].speedX;
myTrails[i].yPos = myTrails[i].yPos+myTrails[i].speedY;
}
myTrails[i]._x = myTrails[i].xPos;
myTrails[i]._y = myTrails[i].yPos;
}
The first thing we do is to reset our counter i, because we want to use it again. Next, we have a loop, which ensures that our instructions are carried out to every movie clip. This loop can be divided into two cases. In the first case, i equals 1 and we calculate the distance to the mouse rather than the previous movie clip (it doesn't exist). After this, we store a variable speedX according to the logic described earlier (speedX equals v), inside the first movie clip. What we're doing is to take the previous value of speedX, the distance to the mouse plus the distance between to movie clips (letterSpace) and add these. Then, we divide by myRatio and since myFriction. When we look at the expression, we also see that these two must be greater than 1. For instance, if myFriction were 0,5 then we would be multiplying by 2; we would be moving further and further away (myRatio can be smaller than 1, though it isn't desirable). After this, we calculate the next position xPos, which is the current position plus the calculated speed speedX. As mentioned, the logic is the same both in the horizontal plane and in the vertical plane, which is why we write exactly the same in the vertical plane (we simply change x to y). Finally, we look at the cases, where i isn't equal to 1 and discover that the logic is exactly the same, except from that we calculate the distance to the previous movie clip and not the mouse. These instructions are located in the second frame, while we find the following in the third and last frame: gotoAndPlay (_currentframe-1); This is simply another loop (frame-based), where we keep returning to the previous frame (frame 2). This is the end of the tutorial.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|