controlCabecera
Escrito el 30/11/2003 por Xavi Beumala
La verdad es que hacía muchos días que no posteaba nada de código y tenía muchas cosas pendientes en el tintero.
Hoy he rescatado esta clase que tenía por el disco duro y que escribí hace un tiempo. Hoy, un domingo de esos que uno se queda en casa he decidido limpiarla un poco y hacerla pública.
La clase permite controlar la cabeza lectora de una animación para reproducirla en cualquier sentido; tanto hacia adelante como hacia atrás. Ya veréis que tanto su implementación como su uso son muy sencillitos. Se podría decir que sólo tiene un método público.
Aquí os podéis descargar un archivo que contiene un .fla con un ejemplo de uso y .as con la clase. El ejemplo consiste en lo que podría ser una ventana que se abre con una animación y se tiene que cerrar con la misma animación pero invertida. El .as está documentado y contiene lo siguiente:
/*[AUTHOR]
Xavi Beumala
xavi@code4net.com
http://www.code4net.com
Este código lo puedes usar libremente y
modificarlo según te convenga.
[ DESCRIPCION ]
Clase que permite controlar la cabeza
lectora de la linea de tiempo. Permite
reproducir hasta un determinado fotograma
tanto hacia adelante como hacia atrás.
[ EVENTOS ]
@onStop();
Evento disparado cuando la cabeza
lectora llega al fotograma de destino
[ CONSTRUCTOR ]
@controlCabecera(clipDePelicula)
Al constructor de esta clase se le
pasa como parámetro una referencia del
clip de película que queremos controlar
[ MÉTODOS PÚBLICOS ]
@mover(fotograma_destino)
Mueva la cabeza lectora hasta el
fotograma fotograma_destino.
fotograma_destino puede ser un
fotograma anterior como posterior al
fotograma actual
[ UTILIZACIÓN ]
El siguiente código crea una instancia de
ControlCabecera para llevar la cabeza lector
del clip de película myAnim hasta
el fotograma 20.
<code>
myControlCabecera =
new controlCabecera(myAnim);
myControlCabecera.onStop = function() {
trace("hola");
}
myControlCabecera.mover(20);
</code>
Puedes descargar un ejemplo más completo en
http://www.code4net.com/downloads/controlCabecera.zip
[ NOTAS ]
· Si queremos reproducir una animación hasta
el final podemos pasar como parámetro al método
mover() un valor elevado y mayor que el último
fotograma de la aplicación.
myControlCabecera.mover(1000);
*/
_global.controlCabecera = function(contenedor) {
trace("new Control " + contenedor);
this.ref_mc =
contenedor.createEmptyMovieClip("controlCabecera_MC",999);
this.ref_mc.contenedor = contenedor;
this.ref_mc.controlador = this;
this.contenedor = contenedor;
}
controlCabecera.prototype = new Object();
controlCabecera.prototype.mover = function(fin) {
this.contenedor.fin = fin;
this.ref_mc.onEnterFrame =
(fin > this.contenedor._currentFrame) ?
this.__avanzar : this.__retroceder;
}
controlCabecera.prototype.__retroceder = function() {
var current = parseInt(this.contenedor._currentframe);
if(parseInt(this.contenedor.fin) != current &&
current > 0) {
this.contenedor.prevFrame();
}else{
this.controlador.__end.call(this);
}
}
controlCabecera.prototype.__avanzar = function() {
var current = parseInt(this.contenedor._currentframe);
if(parseInt(this.contenedor.fin) != current &&
current < this.contenedor._totalframes) {
this.contenedor.nextFrame();
}else{
this.controlador.__end.call(this);
}
}
controlCabecera.prototype.__end = function() {
delete this.onEnterFrame;
this.controlador.onStop.call(this.contenedor);
}