Bueno, estoy flipando, ahora pruebo a attachear el mc mascara en lugar de pintarlo y sufre la misma pérdida de rendimiento. :(
----- Original Message ----- From: "Javier Fernández" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Saturday, December 03, 2005 10:03 PM Subject: [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 ----------------------------------

