Si la solución sencilla no te convence (es la que más me gusta a mi: ¿para qué narices liarse más?) está claro que hay un problema de refresco. Aparte de lo de usar cacheAsBitmap y updateAfterEvent, te puedes crear un clip de película o un setInterval la leche de rápido para forzar las posiciones de las máscaras.

Si así no te funciona, plantearía el problema de otra manera: ¿es necesario utilizar máscaras?.. ahí lo dejo

Joseba Alonso wrote:

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
----------------------------------


---------------------------------------------------------------------------------------------------
Texto añadido por Panda Client Shield:

Este mensaje NO ha sido clasificado como SPAM. Si se trata de un mensaje de correo 
no solicitado (SPAM), haz clic en el siguiente vínculo para reclasificarlo: 
http://127.0.0.1:6083/Panda?ID=pav_4119&SPAM=true
---------------------------------------------------------------------------------------------------



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

Responder a