¿Quieres registrarte?

Solución a problemas con la clase Tween en Actionscript 3

Por: Cep
4 de Febrero del 2009
1280 de clabLevel
Otros artículos de Cep
3,256 visitas

Hace como un año, en la empresa donde trabaja nos topamos con un gran problema con la clase Tween. El problema era que los eventos aveces no se ejecutaban. Se perdían en el infierno. Un compañero modifico la clase y asunto arreglado.

Después deje de trabajar ahí, y al poco tiempo tuve de nuevo el problema, con mas tiempo y sin ganas de hacer cochinadas me puse a ver porque pasaba esto.

Esto se debe a que estamos/estábamos acostumbrados a hacer las cosas al viejo estilo de as:

Código :

function move():void{
var tween:Tween = new Twen(....);
tween.addEventListener(...);
}


Pero claro ahora tenemos un garbage collector que algunos claman que funciona y yo en lo personal digo que apesta.

Si ha alguien le ha pasado esto es muy sencillo de resolver tan solo hay que poner la variable del tween como una variable de clase y no como una variable local de la función.

Código :

var tween:Tween;
function move():void{
tween = new Twen(....);
tween.addEventListener(...);
}

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas actionscript_3

Comentarios | Enviar un comentario
Curioso.. nunca me ha pasado.. :o
Por: Zguillez
A mi tampoco me ha pasado, quizás porque ya sabía como se trabajaba xD. Pero es un buen punto el saber donde colocar las variables para que no se pierdan. Además debo agregar en el tener la variable afuera te da el control de poder detener y destruir el tween desde cualquier lado para liberar memoria cuan ya no necesites del tween.
Por: Otaku RzO

Otaku RzO-blog :

[...] el tener la variable afuera te da el control de poder detener y destruir el tween desde cualquier lado para liberar memoria cuan ya no necesites del tween.


Bingo.
Por: Juanlu_001
Ammm y porque no usas las clases Tweener ?? son muchisimo mejor que las que vienen en el Flash, funcionan tambien en Flex y por supuesto no se pisan unas con las otras. ^^

Funciona con el mismo motor que McTween pero es para ActionScript 3

Yo las uso y jamas tengo problemas, y cuando las quiero borrar de memoria, hay una funcion que las remueve por completo :wink:
Por: phoxer
Nunca me ha sucedido por que realmente no la uso. Supongo que a algunos les ha d ser muy útil!
Por: M@U
je, eso pasa porque al declarar una variable dentro de una función esta es una variable "temporal".

Es decir, se pierde el acceso a ella y esta se mantiene como anónima consumiendo memoria. Como jamás se elimino manualmente el garbage collector (que si funciona pero que muy pocos entienden como) nunca la borra de memoria.

No es problema de la clase si no un poco de teoría de scoping de variables.

@eldervas, a ver si te haces un artículo sobre el gc para aprender todos :)
Por: fernando
@eldervaZ sorry.

P.D: como edito un post aqui?! argh :S
Por: fernando

fernando :

P.D: como edito un post aqui?!
Solo ellos pueden hacerlo.
:wink:
Por: M@U

M@U :

fernando :

P.D: como edito un post aqui?!
Solo ellos pueden hacerlo.
:wink:

MWAHAHAHAHAHAHAHA!!!


Por: Zguillez
hola chic@s!
Yo tengo un problemilla y aunque no es de la clase tween tiene algo de relacion y quizas podais ayudarme. El caso es que en el archivo fla, tengo entre otras cosas una llamara a un archivo .as para crear un objeto de este.
Mas tarde en el archivo fla cuando se pulsa un boton determinado, elimino ese objeto y lo vuelvo a crear y lo gracioso es que no me lo borra, sino que me crea otro nuevo y me veo en la interfaz con el mismo objeto dos veces.... no se si me entendeis.
Lo que hago es lo siguiente.
A la hora de intentar eliminar el objeto, dentro de la function a la que llama el evento del boton primero elimino del stage dicho objeto.
removeChild(demo);

Luego lo vuelvo a crear.
demo.creaVentanas("Primera Ventana", 0, 140, 400, 200, stage.x, stage.y, stage.stageWidth, stage.stageHeight);

Y por ultimo lo vuelvo a mostrar en el stage.
addChild(demo);


Alguien sabe porque ocurre o si es problema del garbaje colector o algo asi???
Quizas sea una pregunta muy tonta pero es que soy bastante nuevo en esto.
Muchas gracias a todos de antemano.
Por: illo_guay
Muy buen apunte, ya empezaba a sospechar que hacia alguna cosa mal... ;)
Por: sisco_out-blog
esta genial bye
Por: eva carnales-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.