Building a Tsunami

Page 2 of 3
Building a Tsunami
In the first case, we have the following code:
If (mouseposX >= boundleft and mouseposX <= boundright and mouseposY >= boundtop and mouseposY <= boundbottom)
Loop While (i <= endnum)
Set Variable: "myDif" = (EVAL("textY" & i) ) - (mouseposY-boundtop)
//Comment: percentage increase
Set Variable: "scaleAmount" = 250 - ((myDif*myDif) /16)
Set Variable: "alphaAmount" = 100 - ((myDif*myDif) / 6)
If (scaleAmount < 100)
Set Variable: "scaleAmount" = 100
End If
If (alphaAmount < 50)
Set Variable: "alphaAmount" = 50
End If
Set Property ("text" & i, X Scale) = scaleAmount
Set Property ("text" & i, Y Scale) = scaleAmount
Set Property ("text" & i, Alpha) = alphaAmount
Set Variable: "i" = i + 1
End Loop
//Comment: *** add up total Y space filled by text ***
Loop While (m <= endnum - 1)
Set Variable: "filledSpace" = filledSpace + GetProperty ( "text" & m, _height)
Set Variable: "m" = m + 1
End Loop
//Comment: *** find total Y space not filled by text***
Set Variable: "totalheight" = GetProperty ( "text" & endnum, _y) - GetProperty ( "text" & startnum, _y)
Set Variable: "gapSpace" = totalheight - filledSpace
Set Variable: "avgDistance" = gapSpace / numberofitems
Set Variable: "m" = startnum + 1
Loop While (m <= endnum - 1)
Set Property ("text" & m, Y Position) = (GetProperty ( "text" & (m-1), _y) + GetProperty ( "text" & (m-1), _height)) + avgdistance
Set Variable: "m" = m + 1
End Loop
The first If statement confirms that the mouse is located inside the box. If it is, then we need to calculate the distance between each object and the cursor. This is done in a loop, where we first determine the distance between the mouse and the top bound. This is necessary, since the object and the mouse aren’t located in the same level (it would only be indifferent, if the top bound was 0). The distance between the object and the mouse is then the object’s vertical position minus the value, we just calculated (the parenthesis).
After we have calculated the distance between the object and the mouse, we want to use this value (“myDif”) to determine the scale and alpha value of the object. The way these values are determined is similar and also very important. If you look at the variable “scaleAmount”, then you’ll notice that it is dependent of “myDif”. If “myDif” equals 0, then “scaleAmount” would be 250 (maximum). If “myDif” is greater, then “scaleAmount” would be smaller and thus a greater distance results in a smaller scale. Since “myDif” is squared, we accomplish symmetry around the location of the mouse. An example of this would be to have two objects, where “myDif” equals –5 and 5. These objects would have the same scale, since (-5)*(-5) = 25 and 5*5 = 25. If “myDif” wasn’t squared, but only divided by 16 (if you increase this number, this will result in a larger scale and an expansion of the tsunami), then another If statement converting “myDif” to an absolute value would be required. Furthermore, a relative small distance would give a relative large scale, which wouldn’t look satisfying. To ensure that an object isn’t smaller than at first (100), we insert an If statement. The alpha value is calculated in exactly the same way; the only difference is that the maximum is 100; the minimum 50 and we divide by 16 instead of 250, 100 and 6 (_xscale and _yscale are measured in percentages with the default set to 100). We then apply these values by using Set Property.
Finally, we want the distance between the objects, when the mouse is located inside the box, to be the same. In order to do this, we need to calculate an average distance between the objects. For this purpose, we need to find the space filled by the objects (“filledSpace”), which is the sum of all the heights (except for the first and last, since they are empty), and the total space between the first and last object (“totalheight”). The space not filled by the object is then the total height minus the filled space (“gapSpace”). To find the average, we divide this variable by the total number of objects (“avgDistance”). Having calculated the average distance, we want to apply this value to each object by using Set Property (this is not done for the first and last object, since these are empty movie clips and thus our starting value in the loop is the first object plus one. We loop while this starting value is smaller or equal to the ending value, which is the last item minus one). When applying the value, the object is placed according to the position and height of the previous movie clip plus the average distance.


