ActionScript - Rotacion 2 mc sobre mismo eje con el raton

 
Vista:

Rotacion 2 mc sobre mismo eje con el raton

Publicado por nestor (1 intervención) el 28/07/2016 01:00:37
Hola a todos, quería pedir ayuda sobre rotación de dos MovieClip en un mismo punto de anclaje.
Les comparto parte de mi código en la que no se como hacerlo.

Esta es la función rotación que he escrito:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function rotacion(e:Event):void
{
    var grados:Number = 180/Math.PI;
    var radianes:Number = Math.atan2 (eje.y-root.mouseY,eje.x-root.mouseX);
    var giro:Number = radianes*grados;
    var centro:Point = new Point(eje.x,eje.y);
    var m:Matrix=rotar.transform.matrix;
 
        eje.rotation = giro;
	m.tx -= centro.x;
	m.ty -= centro.y;
	m.rotate (.1);
	m.tx += centro.x;
	m.ty += centro.y;
	rotar.transform.matrix=m;
}

Esta seria la imagen del archivo

mostrar-1469654652_thumb190


Lo que estoy haciendo es que el rectángulo gire permanentemente sobre el punto de anclaje del circulo (cruz marrón) pero el punto de anclaje del rectángulo (cruz roja) se mantenga en el centro.

Si se bajan el archivo editable que dejare adjunto notaran que el circulo se mueve con las flechas del teclado y al mismo tiempo rota sobre su punto de anclaje mirando donde se ubica el puntero.

Ahora la ayuda que estoy buscando es lograr que rectángulo respetando todo lo que he hecho no rote permanentemente, que igual que el círculo rote sobre el punto de anclaje del círculo mirando siempre al puntero del ratón.

Descargar archivo: mostrar.fla
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Rotar dos MovieClips alrededor de un punto de anclaje común

Publicado por Alejandro (369 intervenciones) el 28/06/2023 22:43:56
Para lograr que el rectángulo rote alrededor del punto de anclaje del círculo, mirando siempre hacia el puntero del ratón, puedes aplicar una transformación de matriz al rectángulo. Aquí tienes una posible solución basada en tu código existente:

1. Primero, asegúrate de que el rectángulo y el círculo estén en diferentes instancias de MovieClip y tengan sus puntos de anclaje en los lugares correctos. El círculo debería tener su punto de anclaje en el centro y el rectángulo debería tener su punto de anclaje en el centro de su base.

2. Modifica tu función `rotacion` de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function rotacion(e:Event):void {
    var grados:Number = 180 / Math.PI;
    var radianes:Number = Math.atan2(eje.y - root.mouseY, eje.x - root.mouseX);
    var giro:Number = radianes * grados;
 
    // Rotar el círculo alrededor de su punto de anclaje mirando hacia el puntero del ratón
    eje.rotation = giro;
 
    // Obtener el punto de anclaje común para el rectángulo y el círculo
    var centro:Point = new Point(eje.x, eje.y);
 
    // Crear una matriz de transformación para el rectángulo
    var m:Matrix = rotar.transform.matrix;
    m.tx -= centro.x;
    m.ty -= centro.y;
 
    // Calcular el ángulo de rotación para el rectángulo
    var rectanguloAngulo:Number = Math.atan2(rotar.y - root.mouseY, rotar.x - root.mouseX);
 
    // Aplicar la rotación al rectángulo alrededor del punto de anclaje común
    m.rotate(rectanguloAngulo);
 
    // Volver a colocar la matriz en su posición original
    m.tx += centro.x;
    m.ty += centro.y;
 
    // Asignar la matriz de transformación al rectángulo
    rotar.transform.matrix = m;
}

En esta solución, se calcula el ángulo de rotación para el rectángulo basado en la posición del ratón en relación con el punto de anclaje común. Luego, se aplica una transformación de matriz al rectángulo para lograr la rotación alrededor del punto de anclaje común.

Recuerda ajustar los nombres de las instancias de MovieClip (`eje` y `rotar`) según tus nombres reales.

Espero que esta solución te ayude a lograr la rotación deseada para el círculo y el rectángulo. ¡Buena suerte con tu proyecto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar