Comunidad de diseño web y desarrollo en internet online

Problema con delete onEnterFrame

Citar            
MensajeEscrito el 06 Jun 2008 03:09 am
Muy buenas,

tengo un clip de película que exporto para ActionScript y luego poder crear instancias de él. El problema viene que dentro coloco una función que contiene un this.onEnterFrame para que haga una función definida mientras se cumpla una condición y cuando esa condición se cumple entonces lo elimino con delete this.onEnterFrame. Hasta ahí todo bien, el problema viene si tengo varias instancias de este clip, el delete elimina todos los onEnterFrame de cada objeto. Cada objeto tiene un nombre diferente que le voy asignando en tiempo de ejecución a la vez que se crea. ¿Alguien sabe a que se debe esto y como solucionarlo?

Muchas gracias de antemano.

Por sico

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 06 Jun 2008 02:54 pm
SI el código está dentro del clip, es el mismo para todos, tienes que poner el código fuera del clip para que cambia en cada instancia, o parametrizarlo (usando una función) que debe ser llamada desde fuera.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2008 03:17 pm
Gracias por la respuesta. El problema es que el delete onEnterFrame creo yo que afecta al frame en el que está el código, por tanto aunque sea una función a la que le pase como parámetro el objeto, cuando borre el onEnterFrame afectará a todos igualmente.

Por sico

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 06 Jun 2008 03:23 pm
Dado que las funciones son llamadas a nivel de la instancia, afectan solo a esta. Haz la prueba

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2008 04:34 pm
Si pongo esto no funciona:

function rotar (objeto) {
objeto.onEnterFrame = function() {

...................

if (condicion) {
delete objeto.onEnterFrame;
}
};

y si cambio objeto por "this" tampoco.

Por sico

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 06 Jun 2008 04:50 pm
Segundo problema: El código se ejecuta desde la línea de tiempo principal hacia las secundarias. Es decir, si en el mismo frame pones la instancia y llamas al método, no se ejecuta porque no está definido aún. Para probarlo, pon la instancia en el escenario pero llama al método en el segundo frame (pon un stop además para evitar que haga loop)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2008 06:01 pm
Le estoy dando vueltas y vueltas y no lo consigo. ¿No hay ninguna manera mejor de hacer que una función se repita una y otra vez independientemente hasta que se de una condición y que pueda haber varias funciones ejecutándose al mismo tiempo (o no)?

Lo que quiero hacer es que un objeto se desplace según una función dada cuando se llame a la función. Gracias por todas las respuestas que me has dado solisarg.

Por sico

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 06 Jun 2008 06:58 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2008 09:26 pm
Eso es lo que utilizo normalmente, pero ahora necesito hacerlo con fórmulas matemáticas así que la clase Tween no me sirve :(

Por sico

5 de clabLevel



 

safari
Citar            
MensajeEscrito el 07 Jun 2008 01:30 pm
Ya lo he solucionado.
Para al que le interese le digo como lo he hecho.
Los instancias las creo juntas en un frame cualquiera y la función se encuentra ahí también. A la función le paso el objeto y el objeto tiene una función que elimina el onEnterFrame.

Función para poner donde sea:

function miFuncion (objeto) {
objeto.onEnterFrame = function() {

...................

if (condicion) {
objeto.Parar;
}
};

Función para poner dentro del objeto:

function Parar () {
delete this.onEnterFrame;
}

El porqué no me funciona directamente... no lo sé, pero así me funciona. Muchas gracias por tu ayuda Jorge.

Por sico

5 de clabLevel



 

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.