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

Problemas con POO en AS

Estas en el tema de Problemas con POO en AS en el foro de Flash y Actionscript en Foros del Web. Hola.. no sé qué problema tengo.. no sé porque no me funcionan las clases bien. el problema es que cuando si llega a la funcion ...
  #1 (permalink)  
Antiguo 23/01/2006, 16:50
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
Pregunta Problemas con POO en AS

Hola.. no sé qué problema tengo.. no sé porque no me funcionan las clases bien.

el problema es que cuando si llega a la funcion "funcion" pero en la ventana del trace en vez de botar el numero 10, bota "undefined"

Mi clase:

Código PHP:
class holas extends MovieClip {
 public var 
sentido:Number;
 public var 
intervalSentido:Number;
 function 
holas() {
  
this.sentido 10;
  
this.intervalSentido setInterval(this.funcion100);
 }
 function 
funcion() {
  
trace(this.sentido);
 }

Gracias de antemano
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #2 (permalink)  
Antiguo 23/01/2006, 17:12
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
¿Cómo es el código del .fla? Puede que el problema esté ahí.
  #3 (permalink)  
Antiguo 23/01/2006, 17:19
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
creo un movieclip.. y le doy un vínculo a ese AS... no hay nada de código en mi fla..

es más.. esto si me manda el valor 10 en la ventana del trace:

class holas extends MovieClip {
public var sentido:Number;
public var intervalSentido:Number;
function holas() {
this.sentido = 10;
this.funcion();
}
function funcion() {
trace(this.sentido);
}
}

osea cuando no llamo a la función por el setInterval.
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #4 (permalink)  
Antiguo 23/01/2006, 19:53
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Ups, no me di cuenta de que estabas extendiendo MovieClip... que es un poco distinto al resto de los objetos en Flash.

Pero el tema es que si no tenés un código que llame a algún método de la clase o que asigne alguna propiedad (si son públicas) sólo se va a ejecutar lo que esté adentro del constructor, que es el método/función que tiene el mismo nombre que la clase. Por eso, cuando llamaste a la función "función" desde el constructor, te mostró el trace.

Pero sin código, ¿cómo podrías determinar cuándo y en qué condiciones tiene que ejecutarse algún método y cuándo no? A grandes rasgos, la idea de la POO es definir clases, que son un "molde" y después crear instancias particulares de esa clase, que son los objetos. Dentro de la clase definís variables y métodos, con lo cual encapsulás toda la funcionalidad de un objeto determinado y hacés que sea más fácil reutilizarlo, más modular, y además evitás, por ejemplo, problemas de nombres de variables repetidos (cuando la película empieza a crecer y muchos meten mano, no es tan difícil que pase eso).

Última edición por califa010; 23/01/2006 a las 21:06
  #5 (permalink)  
Antiguo 23/01/2006, 20:53
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 15 años, 11 meses
Puntos: 193
Al ejecutar un setInterval en una Clase no se porque se pierde la referencia de la clase donde se esta ejecutando.

Una solucion seria enviar la referencia de la clase al setInterval, algo asi:

Código:
class holas extends MovieClip 
{
	public var sentido : Number;
	public var intervalSentido : Number;
	function holas ()
	{
		this.sentido = 10;
		this.intervalSentido = setInterval (this.funcion, 100, this);
	}
	function funcion (owner)
	{
		trace (owner.sentido);
	}
}
  #6 (permalink)  
Antiguo 24/01/2006, 14:57
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
Gracias.. lo probaré
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
  #7 (permalink)  
Antiguo 26/01/2006, 15:30
Avatar de mamon  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 1.302
Antigüedad: 15 años, 11 meses
Puntos: 3
Si me funcione poner lo que me dijoTMeister
Gracias!
__________________
Yo si sé lo que es trabajar duro, porque lo he visto.
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 10:44.