ActionScript: Repitiendo una operación muchas veces
Usted desea realizar tiempos múltiples de una tarea dentro de un solo marco. Utilice un lazo para realizar los mismos tiempos múltiples de la tarea dentro de un solo marco. Por ejemplo, usted puede utilizar a para la declaración: para (var i = 0; i < 10; i++) {// exhibición
el valor del trace(i) del i.; }
Cuando usted desea ejecutar los mismos de la acción (o las variaciones leves tiempos múltiples de eso) dentro de un solo marco, utilice una declaración de colocación para hacer su código más sucinto, más fácil leer, y más fácil ponerse al día. Usted puede utilizar una declaración del rato o una a para la declaración para este propósito, pero a para la declaración es generalmente la opción mejor. Ambas declaraciones alcanzan el mismo resultado, pero para la declaración es más compacto y más familiar a la mayoría de los programadores. El sintaxis de a para la declaración consiste en cinco porciones básicas: Para la palabra clave Cada para la declaración debe comenzar con a para la palabra clave. Expresión de la inicialización El lazo emplea típicamente una variable del índice (a.k.a. un contador del lazo) se inicialice que cuando la declaración primero se encuentra. La inicialización se realiza solamente una vez sin importar cuántas veces se repite el lazo. Pruebe la expresión Un lazo debe incluir una expresión de la prueba que vuelva verdad o falso. La expresión de la prueba se evalúa una vez cada vez a través del lazo. Generalmente, la expresión de la prueba compara la variable del índice a otro valor, tal como un número máximo de las iteraciones del lazo. La expresión total debe evaluar para verdad para para que el cuerpo de la declaración se ejecute (ponga en contraste esto con a . . . mientras que lazo, que se ejecuta por lo menos una vez, incluso si la expresión de la prueba es falsa). Por otra parte, si la expresión de la prueba nunca llega a ser falsa, usted creará un bucle infinito, dando por resultado una advertencia que el jugador de destello esté funcionando lentamente (que aparece después de 15 segundos). Expresión de la actualización La expresión de la actualización pone al día generalmente el valor de la variable usada en la expresión de la prueba de modo que, en un cierto punto, la expresión de la prueba llegue a ser falsa y los extremos del lazo. La expresión de la actualización se ejecuta una vez cada vez a través del lazo. Un bucle infinito es causado a menudo no pudiendo poner al día la variable apropiada en la expresión de la actualización (generalmente la misma variable usada en la expresión de la prueba). Cuerpo de la declaración El cuerpo de la declaración es un bloque de los substatements incluidos en apoyos rizados que se ejecuta cada vez a través del lazo. Si la expresión de la prueba nunca es verdad, para el cuerpo de la declaración no será ejecutado. Para la palabra clave debe venir primero, y debe ser seguida por la inicialización, la prueba, y las expresiones de la actualización incluidas en paréntesis. Los puntos y comas deben separar las tres expresiones a partir de la una otras (aunque la inicialización, la prueba, y las declaraciones de la actualización son opcionales, los puntos y comas son obligatorios). El resto del para el lazo se compone del cuerpo de la declaración incluido en apoyos rizados. La forma general es: para (inicialización; prueba; actualización)
{cuerpo de la declaración}
Aquí está un ejemplo de a para la declaración que hace salir los números 0 a 999. Porque la variable i del índice es una variable local, la introducimos con la palabra clave del var en la expresión de la inicialización. para (var i = 0; i < 1000; i++) {trace(i);
} rastro ("que es el extremo.");
Para entender para la declaración, usted puede seguir junto con el intérprete de ActionScript como ella procesa el comando. En el ejemplo precedente, para la palabra clave dice a intérprete realizar las declaraciones dentro del para el lazo mientras la expresión condicional es verdad. La expresión de la inicialización se ejecuta solamente una vez, y fija la variable i a 0. Después, el intérprete comprueba la expresión de la prueba (i < 1000). Porque i es 0, que es menos de 1000, la expresión evalúa para verdad y la acción del trace() dentro del para el cuerpo de la declaración se ejecuta. El intérprete de ActionScript entonces ejecuta la declaración de la actualización, en este caso i++, que los incrementos i por 1. El intérprete entonces repite el proceso de la tapa del lazo (pero salta el paso de la inicialización). El intérprete comprueba tan otra vez si la expresión de la prueba sea verdad y, si es así ejecuta el cuerpo de la declaración otra vez. Entonces ejecuta la declaración de la actualización otra vez. Las repeticiones de este proceso hasta la expresión de la prueba son no más largas verdad. El valor pasado exhibido en la ventana de la salida es 999, porque una vez que i se incremente a 1000, la expresión de la prueba evalúa no más de largo para verdad y el lazo acaba. Una vez que el lazo termine, la ejecución continúa con cualesquiera comandos siguen el lazo. Las expresiones de la inicialización y de la actualización pueden incluir las acciones múltiples separadas por comas. Del ejemplo los incrementos siguientes simultáneamente i y decrementos j, y exhibiciones sus valores en la ventana de la salida: para (var i = 0, j = 10; i < 10; i++, --) de j
{el trace("i es" + i); el trace("j es" + j); }
El ejemplo precedente no es igual que usando dos jerarquizados para las declaraciones (que se demuestra en el bloque siguiente del código). Es también campo común al uso jerarquizado para las declaraciones. Cuando usted utiliza jerarquizado para la declaración, utilice una diversa variable del índice que lo usado en el exterior para el lazo. Por la convención, el exterior para el lazo utiliza la variable i, y jerarquizado para el lazo utiliza el j variable. Por ejemplo: para (var i = 1; i < = 3; i++) {para (var j =
1; j < = 2; j++) {trace(i + "X" + j + "=" + (i * j));
}}
El ejemplo precedente exhibe la tabla siguiente de la multiplicación en la ventana de la salida: 1 X 1 = 1 1 X 2 = 2 2 X 1 = 2 2 X 2 = 4 3 X 1 = 3 3 X 2 = 6 Es posible jerarquizar niveles múltiples para de declaraciones. Por la convención, cada nivel adicional del nesting utiliza el carácter alfabético siguiente como la variable del índice. Por lo tanto, el tercer nivel de jerarquizado para las declaraciones utiliza típicamente k como la variable del índice: para (var i = 1; i < = 3; i++) {para (var j =
1; j < = 3; j++) {para (var k = 1; k < = 3;
k++) {trace(i + "X" + j + "X" + k + "=" + (i * j * k));
}}}
Además, usted puede utilizar para las declaraciones colocar al revés: //cuenta al revés a partir el 10 a 1. para (var i = 10;
i > 0; --) i {trace(i); }
Usted no debe utilizar a para la declaración para realizar tareas en un cierto plazo. Muchos programadores incurren en la equivocación de intentar utilizar para las declaraciones animar los clips de la película. Por ejemplo: para (var i = 0; i < 20; i++) {myMovieClip._x
+ = 10; }
Aunque el código precedente mueve los pixeles del clip 200 de la película a la derecha de su punto de partida, todas las actualizaciones ocurren dentro del mismo marco. Hay dos problemas con esto. Primero de todos, las actualizaciones de la etapa solamente una vez por marco, tan solamente la actualización pasada se demuestran en la etapa (que hace el clip de la película saltar 200 pixeles repentinamente más bien que que se mueve suavemente en 20 pasos). Y en segundo lugar, iguale si la etapa se pone al día más a menudo, cada iteración con para el lazo toma solamente algunos milisegundos, así que la animación sucedería demasiado rápidamente. Para las acciones que usted desea ocurrir en un cierto plazo, utilice a tratante del onEnterFrame(). Por otra parte, los lazos de repetición apretados no se deben utilizar para realizar los procesos muy largos (cualquier cosa que toma más que una fracción segundo). El jugador de destello exhibe una advertencia siempre que un solo lazo se ejecute por más de 15 segundos. Usar un tratante del onEnterFrame() o la función del setInterval() evita el mensaje de alerta y permite que el flash realice otras acciones además de las acciones repetidas que son parte del lazo. esto es un artículo agregado por Gabriel Savimbi
|
|||
|