
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
172
|
Chapter 8: Loop Statements
To prevent a user-defined object property from appearing in a for-in loop, you can
use the undocumented ASSetPropFlags( ) function as follows:
// Create a new ball object with radius and color properties.
var ball = new Object( );
ball.radius = 10;
ball.color = "red";
// Hide ball.radius from for-in loops.
ASSetPropFlags(ball, ["radius"], 1);
// Displays: color (radius is hidden)
for (var prop in ball) {
trace(prop);
}
This technique is not officially documented by Macromedia and may be replaced by
a more intuitive function in the future. It is available in Flash Player 5 and Flash
Player 6. For more information, see:
http://chattyfig.figleaf.com/flashcoders-wiki/index.php?ASSetPropFlags
In Flash Player 5, input text fields without a default value are not enu-
merated by a for-in loop. Hence, form-validation code that detects
empty text fields will not work properly unless those text fields are
explicitly declared as variables in the timeline upon which they reside.
In Flash Player 6, all text fields are represented by objects and are enu-
merated by for-in even when empty.
The for-in statement can also be used to extract elements in an array, in which case it
takes the form:
for (var thisElem in array) {
substatements; // Substatements typically use thisElem in ...