Comunidad de diseño web y desarrollo en internet online

PUNTO DE REGISTRO DE UN createEmptyMovieClip

Citar            
MensajeEscrito el 25 Ago 2005 02:03 pm
El problema es el siguiente:

Creo un triángulo equilátero y quiero rotarlo sobre sí mismo. Al hacerlo dinámicamente con createEmptyMovieClip me crea como punto de registro y como coordenadas del triángulo el punto 0,0

Si aplico un _rotation incrementando el ángulo en el evento onEnterFrame me lo desplaza.

Intento calcular cual es el punto medio del triángulo y desplazarlo para compensar su desplazamiento pero no lo consigo, alguien puede ayudarme.

El código es el siguiente:

xCentro = 300;
yCentro = 200;
r = 100;

_root.createEmptyMovieClip ("triangulo", 1);
with (_root.triangulo){
lineStyle (1, 0x000000, 100);
moveTo (xCentro, yCentro - r);
lineTo (xCentro + r* Math.cos(Math.PI/180 * 150), yCentro + r * Math.sin(Math.PI/180 * 150));
lineTo (xCentro + r* Math.cos(Math.PI/180 * 30), yCentro + r * Math.sin(Math.PI/180 *30));
lineTo (xCentro, yCentro - r);
}


this.onEnterFrame = function() {
trace(triangulo._rotation)
triangulo._rotation += 1;

rr = triangulo._rotation;

r = (_width+_height)/2

m = (Math.cos(Math.PI/180 * rr)) * -r/(Math.sin(Math.PI/180 * rr)) * r
xx = Math.cos(Math.PI/180 * rr) * (r/2)
yy = Math.sin(Math.PI/180 * rr) * (r/2)

triangulo._x = xx;
triangulo._y = yy

}

Después del Rotation en el EnterFrame intento calcular mediante pendientes y demás elementos trigonométricos cual sería el desplazamiento en cada caso, pero ... ufff

Por gronsi

31 de clabLevel



 

msie
Citar            
MensajeEscrito el 25 Ago 2005 03:32 pm
por que no creas un movie clip vacio en la biblioteca y le pones el punto de registro donde quieras? :? , y ese lo vas atacheando cada vez que los necesites :)

no sería más fácil? :P

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 25 Ago 2005 05:23 pm
si mal no recuerdo tu "centro" estara en la mitad de la anchura de tu mc y a dos terceras partes de tu altura, al menos ahi es donde se cortan las medianas d elos triangulos y al ser ekilatero coincide con la altura

De todas formas esta linea
moveTo (xCentro, yCentro - r);
lo que hace es dibujarte a mitad de la pantalla, por lo que al rotar el MC rotarias mucho mas, lo mejor es que hagas el triangulo y despues muevas el MC hasta el centro de la pantalla

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 25 Ago 2005 08:06 pm
No, no, cuando creas el MC, dinámicante, el punto de referencia de los MovieClips no es la mitad del ancho. es la esquina superior izquierda. Mira con este codigo gira un triangulo, sobre su centro:

Código :

function Triangulo(){
      lineStyle (lineaGrosor, lineaColor, ((lineaColor==null) ? 0:100));
      if (vFondoColor <> null)
      beginFill (vFondoColor, 100)
      moveTo (Ancho / 2, Alto / 2);
      lineTo ( - Ancho / 2, Alto / 2);
      lineTo (0, - Alto / 2);
      lineTo (Ancho / 2, Alto / 2);
      endFill ();

}
onEnterFrame=function(){
  mcTriangulo._rotation += 5;
}

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 25 Ago 2005 09:14 pm
Gracias, he hecho algunas modificaciones y ya me va. Es lo que tiene no dormir y obsesionarse con un problema.

El muñón !!

Por gronsi

31 de clabLevel



 

msie
Citar            
MensajeEscrito el 26 Ago 2005 06:39 am
JD con lo de la mitad del ancho me referia, exactamente a eso, a que el centro del triangulo estaria ahi, no el del MC

Sobre el centro de la altura... creo que estaria a 2/3 partes de la altura del triangulo...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 26 Ago 2005 09:38 am
Ya lo tengo, de esta forma el giro es perfecto puesto que antes no era preciso el punto central del triángulo y seguía variando las coordenadas x e y.

Aquí teneis el código, por si le sirve a alguien.

_root.createEmptyMovieClip ("triangulo", 30);
with (_root.triangulo){
lineStyle (0.5, gColorChuleta, 100);
Ancho = 100
Alto = Math.sin(Math.PI/180 *30) * ((Ancho/2)/Math.cos(Math.PI/180 *30))
moveTo (Ancho / 2, Alto);
lineTo (- Ancho/2, Alto );
lineTo ( 0, -Alto *2);
lineTo (Ancho / 2, Alto);
}

onEnterFrame=function(){
triangulo._rotation += 5;
}

Por gronsi

31 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.