3. What is a “Loop" Statement?
• A loop ("iteration") statement re-executes specified
code until a condition is met
• ActionScript supports four different loop statements
• for
• for-in
• while
• do-while
6. Bucle while
var aNames:Array = ["Fred", "Ginger", "Sam"];
while(aNames.length > 0)
{
trace("Names in array: " + aNames.length);
trace(aNames.pop());
}
El bucle while se ejecuta mientras su condición sea verdadera.
Si nunca cambia nada en el código del bucle como para que la
condición pase a ser falsa, se estará creando un bucle sin fin.
7. Bucle do – while
var aNames:Array = [];
do
{
trace("Names in array: " + aNames.length);
trace(aNames.pop());
} while(aNames.length > 0)
El bucle do-while siempre se ejecuta por lo menos una vez.
Después, continúa ejecutándose mientras su condición siga siendo verdadera.
En el código, vería “Names in array: 0”,
aun cuando la condición es falsa,
porque la longitud de aNames no supera 0 y
la condición no se ha comprobado hasta después
de que el código del bucle se ha ejecutado.
8. • AttachingMultipleMovieClipsfrom anArray ofData
• Loop over the length of an array
• Trace index variables
• Use index variables to create unique instance names
• Use index variables to assign unique positions
• Assign arrayvalues for display in a dynamically generated MovieClip instance
Walkthrough7-1
10. What's a “Conditional Statement"?
• A conditional statement tests whether one or more
comparison expressions are true
• If the entire condition is true, specified code executes,
else other tests or default code may execute
• ActionScript supports three types of conditional
statements
• if / else
• switch / case (not covered)
• Conditional operator (not covered)
11. What's a “Comparison Expression"?
• ActionScript supports seven main comparison
expressions
• Is it true that
• x > y x is greater than y ?
• x >= y x is greater than or equivalent to y ?
• x < y x is less than y ?
• x <= y x is less than or equivalent to y ?
• x == y x is equivalent (not "equals") to y ?
• x != y x is not equivalent to y ?
• x instanceof y x is an instance of a class named y
12. How Does it Look in Code?
• If the expression is true, the code block executes
var password:String = "fly";
if (txtPassword.text == password) {
// runs if User typed "fly" in the password field
}
if (aPlayers instanceof Array) {
// runs if aPlayers is an instance of the Array class
}
13. How Do I Ask if Something is False?
• ActionScript supports a "not" logical operator
• Is it true that …
• !(this is true)
• is this expression not true (is it false)?
var password:String = "fly";
if (!(txtPassword.text == password)) {
// runs if User typed anything but "fly" in txtPassword
}
if (!(aPlayers instanceof Array)) {
// runs if aPlayers is anything but an Array
}
14. How Do I Ask More Than One Question at a Time?
• ActionScript supports "and" and "or" logical operators
• Is it true that
• This is true && ("and") this is true
• Are both expressions true?
• This is true || ("or") this is true
• Is either expression true?
15. How Does It Look in Code?
• If the entire compound expression is true, the code will
execute
if (expression1 && expression2) {
// runs if expressions 1 and 2 are both true
}
if (expression3 || !(expression4)) {
// runs if expression 3 is true or 4 is not true
}
16. How Does It Look in Code?
• If the entire compound expression is true, the code will
execute
if (txtPassword.text == "fly" && player.admin == true) {
adminMode(true);
}
if (player.highScore < 200 || !(player.status == "expert"))
{
easyMode(true);
}
17. Can I Ask Alternative Questions?
• An else if clause is tested only if the prior if is not true
• Otherwise each if is separately tested
if (txtPassword.text == "fly") {
adminMode(true);
}
else if (player.highScore < 200) {
easyMode(true);
}
18. Can I Have a Default?
• An else clause executes if none of the above are true
if (txtPassword.text == "fly") {
adminMode(true);
}
else if (player.highScore < 200) {
easyMode(true);
}
else
{
regularMode(true);
}
19. Can I Nest My Conditions?
• Conditions may be nested, if a second condition only
makes sense if a prior condition is true
if (this._rotation <= 0) {
this._xscale = this._xscale – 10;
if(this._xscale <= 0) {
this.unloadMovie();
}
}
21. • RespondingtoRandom RotationandDynamicallyGeneratingMultiple
MovieClips
• Randomly calculate the change rate of a property
• Test to ensure a calculation is only made once
• Test for and respond to changes in property values
• Call a function a specified number of times
• Observing that each instance of MovieClip symbol is unique
Lab7
23. Topics
• Implementing drag and drop functionality for a MovieClip
• Hit ("collision") testing between MovieClip instances
• Using an initialization object in the attachMovie method
• Using the onEnterFrame event handler
• Working with animation velocity and conditionally testing Stage
bounds
25. startDrag() and stopDrag() are MovieClip methods
ball1.onPress = function():Void {
How Do I Let the User Pick up a MovieClip Instance
and Move It?
26. Every symbol instance has a bounding box
What's the Difference Between a Bounding Box and
Shape?
27. hitTest() is a MovieClip method which returns true or false if
its bounding box or shape is touching either a target MovieClip
How Do I Know if Two Objects are Touching?
30. Timeline animation occurs when the playhead enters a
keyframe with different content than before
When Does Flash “Animation" Occur?
31.
32. MovieClip instances broadcast the onEnterFrame event ("signal") each
time the playhead enters a frame
What's the onEnterFrame Event?
33. Initialization objects are generic objects passed as an optional
argument to the attachMovie() method
How Do I “Initialize" an Attached MovieClip?
34. Velocity or the change rate of an animated MovieClip may
need to be calculated or change at run time
Why Make “Velocity" a Variable?
35. • InitializingAttachedMovieClipswithan onEnterFrameHandler
• Use an initialization object when attaching MovieClip objects
• Use the onEnterFrame event handler
• Randomly calculate velocity (change rate) for two dimensions
• Test for Stage boundaries during animation
• Hit test during animation
Walkthrough8-2