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