07/02/2009, 12:23
|
| | | Fecha de Ingreso: mayo-2007 Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 17 años, 6 meses Puntos: 67 | |
Respuesta: temporizador usa setInterval para estar checando la hora: Cita: Función setInterval
setInterval(functionReference:Function, interval:Number, [ param1:Object, param2, ..., paramN]) : Number
setInterval(objectReference:Object, methodName:String, interval:Number, [ param1:Object, param2, ..., paramN]) : Number
Llama a una función, un método o un objeto en intervalos periódicos durante la reproducción de un archivo SWF. Puede utilizar setInterval() para ejecutar cualquier función de forma repetitiva.
Utilice las siguientes sugerencias cuando trabaje con setInterval():
Identifique el ámbito de la función que se va a llamar.
Identifique el ámbito donde se ha definido el ID de intervalo (el valor devuelto por setInterval()).
Elimine los intervalos definidos anteriormente, antes de iniciar otros nuevos.
Estas sugerencias se describen más detalladamente en los párrafos que siguen.
Identifique el ámbito de la función que se va a llamar. Para identificar el ámbito de la función que se está llamando, pase el objeto en el que se puede ejecutar el método setInterval() (el objeto de ámbito) como el primer parámetro y el nombre de método que desea ejecutar como el segundo parámetro (como se muestra en la segunda firma). De esta forma se asegura que se ejecute el método adecuado desde el ámbito de la referencia de objeto pasada. Cuando el método se ejecuta de esta forma, puede utilizar variables de miembros en el objeto utilizando la palabra clave this.
Identifique el ámbito en el que se definió el identificador de intervalo. Para identificar el ámbito donde se definió el identificador de intervalo (intervalId), puede asignarlo a una variable de miembro en el objeto de ámbito que pase a setInterval(). De esta forma, la función llamada puede localizar el identificador de intervalo en this.intervalId.
Elimine intervalos definidos anteriormente. Para eliminar intervalos definidos anteriormente antes de iniciar otros nuevos, normalmente debe llamar a clearInterval() antes de llamar a setInterval(). De esta forma asegura que no va a sobrescribir o destruir de ninguna otra forma la variable intervalId, que es la única referencia al intervalo de ejecución actual. Para llamar a clearInterval() antes de llamar a setInterval(), el script de inicio y el script que se va a ejecutar deben tener acceso a intervalId, como se muestra en Ejemplos.
Nota: llame siempre a clearInterval() si desea que el script deje de reproducirse indefinidamente.
Disponibilidad: ActionScript 1.0; Flash Player 6
Parámetros
functionReference: Function - Una referencia a la función que se va a llamar.
interval: Number - Tiempo en milisegundos entre llamadas la función functionReference o methodName pasada.
Si interval es menor que la velocidad de fotogramas del archivo SWF (por ejemplo, 10 fotogramas por segundo [fps] equivale a 100 milisegundos), la función de intervalo se llama lo más cerca posible en tiempo del valor de interval. La ejecución de scripts largos que consumen mucha memoria durante un intervalo provoca retrasos. Si la función que se va a llamar inicia un cambio en elementos visuales, debe utilizar la función updateAfterEvent() para que la pantalla se actualice con la frecuencia necesaria. Si interval es superior a la velocidad de fotogramas del archivo SWF, la función de intervalo sólo se llama cuando ha transcurrido interval y la cabeza lectora ha entrado en el siguiente fotograma; de esta forma se minimiza el impacto cada vez que se actualiza la pantalla.
param: Object [opcional] - Parámetros pasados a la función que se envió a functionReference o methodName. Cuando hay varios parámetros, deben ir separados por comas: param1 , param2 , ..., paramN
objectReference: Object - Un objeto que contiene el método especificado por methodName.
methodName: String - Un método que existe en el ámbito del objeto especificado por objectReference.
Valor devuelto
Number - Un entero que identifica el intervalo (el ID de intervalo), que puede pasar a clearInterval() para cancelar el intervalo.
Ejemplo
Ejemplo 1: El ejemplo siguiente muestra un mensaje a un intervalo de 20 milisegundos, hasta 10 veces, y a continuación elimina el intervalo. El ámbito de objeto, this, se pasa como el primer parámetro y el nombre de método, executeCallback, como el segundo. De esta forma, executeCallback() se ejecuta desde el mismo ámbito que el script que realiza la llamada.
var intervalId:Number;
var count:Number = 0;
var maxCount:Number = 10;
var duration:Number = 20;
function executeCallback():Void {
trace("executeCallback intervalId: " + intervalId + " count: " + count);
if(count >= maxCount) {
clearInterval(intervalId);
}
count++;
}
intervalId = setInterval(this, "executeCallback", duration);
Ejemplo 2: El siguiente ejemplo es similar al primero, con la excepción de que llama a clearInterval() antes que setInterval(). De esta forma se evitan bucles no deseados y es especialmente importante en sistemas basados en eventos en los que el script de inicio puede ejecutarse varias veces antes de que se haya eliminado ningún intervalo.
var intervalId:Number;
var count:Number = 0;
var maxCount:Number = 10;
var duration:Number = 20;
function executeCallback():Void {
trace("executeCallback intervalId: " + intervalId + " count: " + count);
if(count >= maxCount) {
clearInterval(intervalId);
}
count++;
}
function beginInterval():Void {
if(intervalId != null) {
trace("clearInterval");
clearInterval(intervalId);
}
intervalId = setInterval(this, "executeCallback", duration);
}
beginInterval();
beginInterval();
beginInterval();
Ejemplo 3: El ejemplo siguiente muestra cómo pasar un argumento personalizado a la función que se va a llamar.
var intervalId:Number;
var count:Number = 0;
var maxCount:Number = 10;
var duration:Number = 20;
var colors:Array = new Array("red",
"blue",
"yellow",
"purple",
"green",
"orange",
"salmon",
"pink",
"lilac",
"powder blue",
"mint");
function executeCallback(param:String) {
trace("executeCallback intervalId: " + intervalId + " count: " + count + " param: " + param);
clearInterval(intervalId);
if(count < maxCount) {
count++;
intervalId = setInterval(this, "executeCallback", duration, colors[count]);
}
}
if(intervalId != null) {
clearInterval(intervalId);
}
intervalId = setInterval(this, "executeCallback", duration, colors[count]);
Ejemplo 4: El ejemplo siguiente muestra cómo utilizar setInterval() correctamente desde una clase personalizada de ActionScript 2.0. Observe que como ocurre en ejemplos anteriores, this se pasa a la función setInterval() para que el método llamado se ejecute en el ámbito correcto.
class CustomClass {
private var intervalId:Number;
private var count:Number = 0;
private var maxCount:Number = 10;
private var duration:Number = 20;
public function CustomClass():Void {
beginInterval();
}
private function beginInterval():Void {
if(intervalId != null) {
trace("clearInterval");
clearInterval(intervalId);
}
intervalId = setInterval(this, "executeCallback", duration);
}
public function executeCallback():Void {
trace("executeCallback intervalId: " + intervalId + " count: " + count);
if(count >= maxCount) {
clearInterval(intervalId);
}
count++;
}
}
En un nuevo documento, cree una nueva instancia de la nueva clase:
var custom:CustomClass = new CustomClass();
y la clase Date para ver la hora, aprieta f1 en flash y mira como se usa. |