/* clone duplica un clip de pelí cula n veces @param c número de copias @param x posición x del clip @param y posición y del clip */MovieClip.prototype.clone = function(c, x, y) { // – if (c == undefined) { return; } // – this.x = x; this.y = y; this.c = Number©; this.r += 1; // – this.x == undefined ? this.x=this._x+this._width+5 : “”; this.y == undefined ? this.y=this._y : “”; // – for (i=0; i<this.c; i++) { duplicateMovieClip(this._name, this._name+i, i+100); copia = _root[this._name+i]; copia._x = this.x; copia._y = this.y; this.x += (this._width+5); } }; // – ejemplo de utilización clip.clone(5,10,10);
Abril 22nd, 2004 at 5:35 pm
Muy útil, lo pillo si no te importa…
Una duda: ¿es posible copiar/duplicar un clip en una ruta determinada?
Abril 22nd, 2004 at 10:54 pm
Tendriamos que modificar el prototipo o crear una clase con más métodos. Tal y como está no.
Abril 26th, 2004 at 11:51 am
Siento decirlo, pero esto:
this.x == undefined ? this.x=this._x+this._width+5 : “";
Me parece una practica pesima. Veo mucho mas correcto lo siguiente:
this.x = x ? x : this._x+this._width+5;
this.y = y ? y : this._y;
Pero utilizar el operador ternario como si fuera un if…
un saludo
Abril 26th, 2004 at 12:04 pm
Joseba,
Seguro que tienes toda la razón, ahora bien, ¿podrí as argumentarlo?
Te lo agradecerí a mucho, pues no entiendo muy bien tu planteamiento, por otra parte, si estoy haciendo un uso incorrecto del operador ternario (yo lo llamaba condicional) me gustarí a corregirlo.
Gracias
Abril 28th, 2004 at 11:53 am
El problema es basicamente que el operador ternario o condicional es un operador de asignacion, no es una estructura de control. Vamos, que se usa para asignar un valor a una variable dependiendo de una condicion.
var a = (b>5) ? 1 : 0;
Pero tu lo estas usando como un if
this.x == undefined ? this.x=this._x+this._width+5 : “";
seria
if(!this.x)this._x+this._width+5;
si usas el operador ternario para hacerlo lo unico que consigues es que tu codigo sea menos legible y con mas bytecode.
En tu caso yo cambiaria las dos lineas y simplificaria mas las operaciones, por ejemplo no te hace falta almacenar las variables x e y en el objeto ya que una vez usadas son inutiles:
MovieClip.prototype.clone = function(c, x, y) {
if (!c)return; // No hace falta el undefined
// Las anteriores sentencias con el op ternario
if(!x)x=this._x+this._width+5;
if(!y)y=this._y;
c = Number©;
this.r += 1; // Esta no se que utilidad tiene
var initobj;
for (var i=0; i<c; i++) {
// El objeto de inicializacion para la duplicacion
initobj = {_x:x+((this._width+5)*i),_y:y};
this.duplicateMovieClip(this._name+i,i+100,initobj);
}
};
a ver si esto no se corta…
Siento el retraso en la respuesta, un saludo
Abril 28th, 2004 at 1:03 pm
Joseba, muchas gracias por tus consejos, toda una lección.
Joseba:
this.r += 1; // Esta no se que utilidad tiene
Toni
Yo tampoco
saludos!
Abril 28th, 2004 at 4:07 pm
propongo usar un par de parámetros más para controlar el desplazamiento:
//
MovieClip.prototype.clone = function(c, x, y, dx, dy) {
if (!c) {
return;
}
// No hace falta el undefined
// Las anteriores sentencias con el op ternario
if (!x) {
x = this._x+this._width+5;
}
if (!y) {
y = this._y;
}
c = Number©;
this.r += 1;
// Esta no se que utilidad tiene
var initobj;
for (var i = 0; i<c; i++) {
// El objeto de inicializacion para la duplicacion
initobj = {_x:x+dx*i, _y:y+dy*i};
this.duplicateMovieClip(this._name+i, i+100, initobj);
}
};
//USO
// miMC.clone(nº copias, iniX, iniY, desplazamientoX, desplazamientoY)
miMc.clone(10, 100, 100, 5, 5);
//miMc.clone(10, 100, 100, miMc._width+5, 0);
//miMc.clone(10, 100, 100, 0, miMc._height+5);
//miMc.clone(10, 100, 100, miMc._width+5, miMc._height+5);
saludos
Diciembre 21st, 2004 at 11:55 pm
hola ke tal toni, estoy encantado con tu web es la mejor ke e encontrado para los ke no sabes mucho de actionscript e visto este tutorial de duplicar clip de peliculas lo ke pasa es ke no me funciona como yo kiero pues el clip ke yo tengo dentro de el tiene una interpolacion en movimiento y cuando termina la interpolacion vuelve a empezar y solo me lo duplica una vez pefectamente pero cuando termina empieza desde cero y no se como hacer para ke eso no ocurra tambien agradeceria si pusieras un tutorial de formularios en flash y php para enviar la informacion de los campos a un email pues los ke e encontrado o estan super mal explicados o no funcionan bueno muchas gracias por leerme y espero respuesta y muchas suerte con la web puesto ke es la mejor ke e encontrado bye
Diciembre 22nd, 2004 at 10:18 am
Hola Alberto, gracias por tus palabras
Aquí hay un formulario bastante sencillo:
http://www.after-hours.org/blog/archives/000199.html
El tema del preloader, dja que me lo mire.
Saludos