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(...);
}
A mi tampoco me ha pasado, quizás porque ya sabía como se trabajaba . 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.
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 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
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