Tengo un TileList con una coleccion de "imagenes". Para mostrar esas imágenes me he creado un componente que hace de itemRenderer. Hasta aki todo bien.
Mi problema viene cuando intento girar la imagen, pero no los textos e iconos que tb forman parte de mi itemRenderer.
Pra girarla tengo dentro del método updateDisplayList de mi itemRenderer una llamada a la siguiente función:
Código ActionScript :
protected function aplicarGiro():void {
var nivelGiro:uint = TileListGiroZoom(listData.owner).nivelRotacion;
var giroAct:Number = TileListGiroZoom(listData.owner).arrayRotacion[nivelGiro];
var radians:Number = degreesToRadians(giroAct);
var offsetWidth:Number = img.width / 2;
var offsetHeight:Number = img.height / 2;
var tempMatrix:Matrix = img.transform.matrix;
tempMatrix.translate(-offsetWidth, -offsetHeight);
tempMatrix.rotate(radians);
tempMatrix.translate(+offsetWidth, +offsetHeight);
img.transform.matrix = tempMatrix;
}
Este método obtiene los valores de arrays de los valores de giro (0, 90, 180, -90) y el nivelGiro actual(el indice para saber que giro tienen todas la imagenes actualmente).
En resumen este método obtiene cuantos grados tiene que estar girada la imagen, respecto a su posicion original.
El problema viene en que los itemRenderer se reutilizan por lo que con lo que actualmente hay escrito me temo que, al obtener tempMatrix, obtengo los valores antiguos.
Es decir, lo que necesito es poner la imagen en su angulo de giro inicial y luego rotarla los grados que tiene la variable giroAct.
Para hacer que gire respecto a su centro la imagen está metida dentro de un VBOX, con una estructura como la que sigue:
Código ActionScript :
<mx:VBox id="contenido" y="{(iconos.visible)? (iconos.y + iconos.height + 2) : 2}" x="2"
backgroundColor="#FFFFFF" cornerRadius="0"
verticalAlign="middle" horizontalAlign="center"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
>
<mx:VBox id="contenedorImagen"
horizontalScrollPolicy="off" verticalScrollPolicy="off"
paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0"
borderColor="#FF0000" borderStyle="solid" borderThickness="4">
<mx:Image id="img" maintainAspectRatio="true"
source="{data.detail.@ruta}"
height="{data.detail.@height}" width="{data.detail.@width}"/>
</mx:VBox>
</mx:VBox>
El VBox "contenido" centra respecto al area del itemRenderer el VBox "contenedorImagen".
Este "contenedorImagen" se encarga de contener la imagen y hacer que cuando se gire la imagen esta gire respecto al centro de la misma y no respecto a su esquina izq.
EL problema es que la imagen hay veces q gira respecto a su izquina (0,0) y no se repinta bien, por problemas de giro, ya que con el zoom no hay problemas de pintado de nuevos elementos (cuando se desplaza el scroll).
Espero haber sido clara, es un código muy extenso y he tratado de poner solo lo mas relacionado.
Gracias de antemano, bye
