Foros del Web » Creando para Internet » Flash y Actionscript »

Crear un setRotation desde el centro

Estas en el tema de Crear un setRotation desde el centro en el foro de Flash y Actionscript en Foros del Web. Buen día compañeros del foro. Al cambiar el valor "rotation" de un Sprite en Flex, este se hace a partir del punto 0,0. Investigando en ...
  #1 (permalink)  
Antiguo 04/07/2010, 22:04
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Crear un setRotation desde el centro

Buen día compañeros del foro.

Al cambiar el valor "rotation" de un Sprite en Flex, este se hace a partir del punto 0,0. Investigando en Google sobre el problema, he visto varias personas con este problema, y la solución más cercana a lo que busco ha sido esta:

Código PHP:
public function addRotation(spr:Spriteangle:Number):void
{
    var 
p:Point = new Point(spr.width/2spr.height/2);
    var 
m:Matrix = new Matrix();
    
m.translate(-p.x, -p.y);
    
m.rotate (angle * (Math.PI/180));
    
m.translate(p.xp.y);
    
m.concat(spr.transform.matrix);
    
spr.transform.matrix m

El problema con esta función es que (como lo dice su nombre), agrega el ángulo de rotación a la rotación actual de la figura. Lo que yo deseo, es poder establecer la rotación de la figura con el parámetro angle, independientemente de la rotación actual que este tenga. Agradeceré mucho sus propuestas.
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...
  #2 (permalink)  
Antiguo 06/07/2010, 18:05
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 8 meses
Puntos: 142
Respuesta: Crear un setRotation desde el centro

Después de un largo rato, llegué con una solución. Quizá no sea la más óptima, pero funciona. Me gustaría saber si alguno de ustedes conoce una forma mejor de hacerlo:

Código PHP:
public function getRotation(spr:Sprite):Number
{
    var 
m:Matrix spr.transform.matrix;
    return 
Math.atan2(m.bm.a)/(Math.PI/180);
}

public function 
setRotation(spr:Spriteangle:Number):void
{
    
addRotation(spr, -Math.round(getRotation()));
    
addRotation(sprangle);
}

public function 
addRotation(spr:Spriteangle:Number):void
{
    var 
p:Point = new Point(spr.width/2spr.height/2);
    var 
m:Matrix = new Matrix();
    
m.translate(-p.x, -p.y);
    
m.rotate (angle * (Math.PI/180));
    
m.translate(p.xp.y);
    
m.concat(spr.transform.matrix);
    
spr.transform.matrix m;

__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...

Etiquetas: centro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:39.