Foros del Web » Creando para Internet » Flash y Actionscript »

Me podrian explicar un poco mas acerca de prototype

Estas en el tema de Me podrian explicar un poco mas acerca de prototype en el foro de Flash y Actionscript en Foros del Web. Me podrian explicar un poco mas acerca de prototype, lo veo en la ayuda de flash, en algunos ejemplos y tutoriales. pero no se del ...
  #1 (permalink)  
Antiguo 28/08/2006, 19:38
 
Fecha de Ingreso: enero-2006
Mensajes: 67
Antigüedad: 18 años, 10 meses
Puntos: 0
Me podrian explicar un poco mas acerca de prototype

Me podrian explicar un poco mas acerca de prototype, lo veo en la ayuda de flash, en algunos ejemplos y tutoriales. pero no se del todo como se usa y si me pueden dar un ejemplo sencillo y decirme por que se usa ahi (algo que no se pueda hacer sin esa funcion, o que sea muy dificil de hacer).

Se los agradecere mucho de antemano GRACIAS
__________________
Criado en los foros
:pensando:
  #2 (permalink)  
Antiguo 29/08/2006, 14:24
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 11 meses
Puntos: 43
Hola NikelOut!

Mas que nada la propiedad "prototype" es la forma en que AS hace viable la herencia, por ejemplo vamos a crear una clase con el nombre MiClase:

Código:
function MiClase(){}
Como ves en el momento que definimos la clase, tenemos un Objeto MiClase que contiene la propiedad prototype, y para añadir métodos o propiedades a esa clase, solamente hacemos lo siguiente:

Código:
function MiClase(){}

MiClase.prototype.$propiedad = "propiedad";
MiClase.prototype.Metodo = function(){
  trace(this.$propiedad);
};
Como puedes ver cree un método y una propiedad para esa clase, ahora solamente tenemos que instanciar para poder utilizar esos métodos y propiedades.

Código:
$objeto = new MiClase();
$objeto.Metodo();
//o también
trace($objeto.$propiedad);
También la forma de heredar de otra clase sería de esta forma:

Código:
function MiClase(){}

MiClase.prototype.$propiedad = "propiedad";
MiClase.prototype.Metodo = function(){
  trace(this.$propiedad);
};

function MiOtraClase(){}
MiOtraClase.prototype = new Miclase(); //Aquí heredamos de la otra clase.
MiOtraClase.prototype.$propiedad2 = "$propiedad2"; //Seguimos añadiendo más cosas a la clase.

//y instanciamos
$objeto2 = new MiOtraClase();
$objeto2.Metodo(); //Utilizamos el método heredado de la otra clase.
Cualquier duda no dudes en postearla.

Un saludo!
  #3 (permalink)  
Antiguo 29/08/2006, 22:21
 
Fecha de Ingreso: enero-2006
Mensajes: 67
Antigüedad: 18 años, 10 meses
Puntos: 0
Muchas Gracias por tu explicacion Jahepi era algo asi lo que necesitaba

Perdona pero no te he acabado de comprender lo analizare mas, de los ejemplos que vi supuse que esto me funcionaria pero como ven no puedo, quize hacer Mc y que cada uno al hacerle clic me llevara cada mc a una posision en x distinta he hice esto pero no me funciona:

Código:
MovieClip.prototype.desplazar = function(x) {
	this.onRelease = function() {
		efx = this._x;
		this.onEnterFrame = function() {
			efx += ((x-this._x)*.8)/20;
			this._x = efx;
		};
	};
};
hola.desplazar(0);
a.desplazar(50);
b.desplazar(100);
c.desplazar(200);
d.desplazar(300);
Cada que le doy clic a un Mc cambia el x para todos, como puedo solucionarlo

de Antemano muchas gracias
__________________
Criado en los foros
:pensando:
  #4 (permalink)  
Antiguo 30/08/2006, 12:31
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 11 meses
Puntos: 43
Hola NikelOut!

El problema es la variable efx, como no la declaraste como local al ejecutarse los métodos tomarán la variable como si fuera de ambito global y por eso te pasa ese error, solamente añade lo siguiente:

Código:
MovieClip.prototype.desplazar = function(x) {
	this.onRelease = function() {
		var efx = this._x;
		this.onEnterFrame = function() {
			efx += ((x-this._x)*.8)/20;
			this._x = efx;
		};
	};
};
Un saludo!
  #5 (permalink)  
Antiguo 30/08/2006, 12:46
 
Fecha de Ingreso: enero-2006
Mensajes: 67
Antigüedad: 18 años, 10 meses
Puntos: 0
Genial me funciona bien gracias
__________________
Criado en los foros
:pensando:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:27.