Prueba utilizando el cacheAsBitmap sobre la mascara, se me ocurre.

Un saludo,

Joseba Alonso
www.5dms.com
www.sidedev.net  

> -----Mensaje original-----
> De: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] En nombre de Javier Fernández
> Enviado el: sábado, 03 de diciembre de 2005 22:04
> Para: [email protected]
> Asunto: [ASNativos] Perdida de rendimiento moviendo mcs 
> creados con la API de dibujo
> 
> Hola listeros, a ver si me pueden aclarar una cosa que acabo 
> de descubrir y me ha dejado anodado.
> 
> Tengo una serie de pestañas que desplazan unas mascaras para 
> mostrar ocultar unos mcs (tipo el componente acordeon pero 
> 'custom', porque el funcionamiento requerido no era el mismo).
> 
> En un principio había 4 pestañas y cuatro mascaras para los 
> cuatro mcs de contenido, ahora me pongo a pulirlo un poco y 
> elimino las mascaras para crearlas con createEmptyMovieClip y 
> la API de dibujo de flash (por dejarlo más limpito) y me 
> encuentro que -con exactamente la misma programación salvo el 
> detalle de las mascaras- las mascaras creadas con este otro 
> método acumulan un retardo que hace que al arrastrar no vayan 
> parejas a las pestañas.
> 
> Como no se si me explico muy bien he subido una comparativa 
> para que podais ver del efecto indeseable del que hablo
> (http://drusunlimited.com/labo/asnativos/miAcordeon/)
> 
> Mi pregunta es ¿a que se debe esta perdida de rendimiento?
> 
> La mascara es un cuadrado normal y corriente, la creo de este modo:
> 
> [code]
>  var mask_mc:MovieClip = _root.createEmptyMovieClip("mask"+i+"_mc",
> _root.getNextHighestDepth());
>  mask_mc.beginFill(0x00FF00, 100);
>  mask_mc.lineStyle(0, 0x00FF00, 0);
>  mask_mc.moveTo(0, 0);
>  mask_mc.lineTo(915, 0);
>  mask_mc.lineTo(915, 660);
>  mask_mc.lineTo(0, 660);
>  mask_mc.endFill();
> [/code]
> 
> El codigo del movimiento es algo más complejo dado que las 
> solapas no se pinchan sino que se arrastran, y deben empujar 
> las que tengan delante, o atrás, dependiendo a que lado estén 
> apiladas, pero dudo que esté ahí el error porque si las 
> mascaras las creo en tiempo de diseño este retardo no se 
> produce. Por si acaso os pego la función:
> 
> [code]
> fStartDrag = function () {
>  var inc:Number = 15;
>  dragger_mc._x = this._x;
>  startDrag("dragger_mc", false, this.miXmin-15, 0, 
> this.miXmax+15, 0);  for (var j = 0; j<=numsolapas; j++) {
>   var solapa:MovieClip = _root["solapa"+j+"_mc"];
>   var mask_mc:MovieClip = _root["mask"+j+"_mc"];
>   mask_mc.onEnterFrame = function() {
>    if (this.miID<numsolapas) {
>     this._x = _root["solapa"+this.miID+"_mc"]._x-915;
>    } else {
>     this._x = _root["solapa"+this.miID+"_mc"]._x+15;
>    }
>   };
>   //Si arrastro una que está a la izquierda
>   if (this.lado == "izquierda") {
>    //arrastro todas la que estén a su derecha pero situadas a 
> la izquierda
>    if (solapa.miID>=this.miID && solapa.lado == "izquierda") {
>     solapa.inc = 15+(j-this.miID)*15;
>     solapa.onEnterFrame = function() {
>      this._x = dragger_mc._x+this.inc;
>     };
>    }
>   }
>   if (this.lado == "derecha") {
>    //arrastro todas la que estén a su izquierda pero situadas 
> a la derecha
>    if (solapa.miID<=this.miID && solapa.lado == "derecha") {
>     solapa.inc = 15+(this.miID-j)*15;
>     solapa.onEnterFrame = function() {
>      this._x = dragger_mc._x-this.inc;
>     };
>    }
>   }
>  }
> };
> [/code]
> 
> Muchas gracias de antemano y un saludo.
> Javier Fernández
> ------------------------------------------
> [ http://drusunlimited.com ]
> 
> ----------------------------------
> Lista ASNativos:[email protected]
> http://www.5dms.com/listas
> ----------------------------------


----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------

Responder a