Comunidad de diseño web y desarrollo en internet online

el dichoso rotate

Citar            
MensajeEscrito el 02 Abr 2007 09:19 am
buenas a todo el mundo, lo que estoy intentado hacer es rotar un MC (puede ser un boton si el caso lo requiere) al ser clickeado. he buscado la palabra "rotate" en la ayuda del flash y me ha salido un codigo que rota un MC asociandolo a una matrix que ha rotado anteriormente con radianes, un codigo facil de entender. vale, lo cambio para que funcione sobre mi mc (en el codigo de la ayuda creaba un rectangulo y luego lo asociaba a un mc mediante una funcion y cosillas asi) y me lo gira perfectamente y yo dije: oleee! pero no tan rapido chavales...porque cuando quiero asociar la accion de giro a un evento, como puede ser el onMovieClip(mouseDown){ ...} me dice que nanai y si quiero meterlo en un sitio tal como: menu1.onMouseDown=function(){...} me dice lo mismo...me muestra las variables como undefined, las propiedades mas basicas de mi mc como pueden ser menu1._x me las muestra como no definidas y no se porque en el primer fotograma me funciona y cuando quiero asociarlo a un evento de clickeo sobre mi MC/BTN me dice que ni de palo...
aqui os pego el codigo para que le echeis un vistazo:

primera prueba:

Código :

onClipEvent(mouseDown)
{
   trace("click");
   import flash.geom.Matrix;
   import flash.geom.Transform;
   
   var myMatrix:Matrix = new Matrix();
   trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0)
   
   var degrees:Number = 90;
   var radians:Number = (degrees/180)*Math.PI;
   myMatrix.rotate(radians);
   trace(myMatrix.toString()); // (a=0.866025403784439, b=0.5, c=-0.5, d=0.866025403784439, tx=0, ty=0)
   
   trace(menu1._x); // 0
   menu1._x = 100;
   trace(menu1._x); // 100
   
   var rectangleTrans:Transform = new Transform(menu1);
   rectangleTrans.matrix = myMatrix;
   trace(menu1._x); // 0
   menu1._x = 100;
   trace(menu1._x); // 100
}


segunda prueba:

Código :

menu1.onMouseDown=function(){
   import flash.geom.Matrix;
   import flash.geom.Transform;
   
   var myMatrix:Matrix = new Matrix();
   trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0)
   
   var degrees:Number = 90;
   var radians:Number = (degrees/180)*Math.PI;
   myMatrix.rotate(radians);
   trace(myMatrix.toString()); // (a=0.866025403784439, b=0.5, c=-0.5, d=0.866025403784439, tx=0, ty=0)
   trace(menu1._x); // 0
   menu1._x = 100;
   trace(menu1._x); // 100
   
   var rectangleTrans:Transform = new Transform(menu1);
   rectangleTrans.matrix = myMatrix;
   trace(menu1._x); // 0
   menu1._x = 100;
   trace(menu1._x); // 100
}


ojala alguien me pueda echar un cable, porque llevo ya una semana retrasando el proyecto con la movidita de girar y otros derivados

un saludo a tod@s
atentamente
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 04 Abr 2007 04:50 pm
por que mi duda no???
ya he preguntado lo mismo con esta 3 veces ya...no sabe nadie la respuesta? tengo que dejar que se vuelva a perder en las profundidades el foro? nadie podria siquiera orientarme ligeramente hacia donde puede estar el error...? o una respuesta de: lo siento, no se me ocurre donde puede estar o que me digan: como eres tan deficiente que no lo ves...
se que no es obligacion de nadie responder y que es un trabajo que se hace "por amor al arte" pero estoy realmente desesperado. tengo que hacer esta web y si pasa el tiempo y no muestro resultados, me quedo sin trabajo, es asi de sencillo.

ojala que alguien pueda echarme un cable o por lo menos dar señales de vida y asi por lo menos el post se mantendra en un lugar donde otros que puedan conocer la solucion se fijen en el

gracias de antemano
atentamente
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 04 Abr 2007 09:35 pm
Al menos yo no respondi por que no tengo idea de que es el dichoso ROTATE, ¿Por qué no, mejor buscas algo con _rotation?, al menos de esa hay mas ayuda, en tu caso específico no se para que te sirve rotate, por que según lo que leí en flash
Descripción
Efecto de transición: gira el objeto de clip de película.

Eso se podria hacer creando un prototipo como el sig:

Código :

MovieClip.prototype.girar = function(a:Number, b:Number, c:Number):Void  {
   var cont:Number = 0;
   var d:Number = (a-b)/c;
   this._rotation = a;
   this.onEnterFrame = function() {
      if (cont<c) {
         cont++;
         this._rotation += d;
      } else {
         this._rotation = b;
         delete this.onEnterFrame();
      }
   };
};

y lo usas asi:

Código :

// movieclip.girar(posision de inicio, posision final, numero de fotogramas);
//ejemplo
my_mc.girar(0, 90, 50);

Ya le haces tus porpios ajustes y listo (Estas acciones se ponen en la linea de tiempo y no en el Clip)

Por cierto, si no puedes hacer algo por cierto método, siempre hay otras alternativas, tal vez esta no sea la mejor, pero espero que te ayude

Por bryanisimo

664 de clabLevel



Genero:Masculino  

Geek

firefox
Citar            
MensajeEscrito el 07 Abr 2007 06:06 pm
ufff. muchisimas gracias
eso es justo lo que buscaba, pero como soy extremadamente novato en flash, no se muchas veces como hacer las cosas y al traducirlo al ingles (rotar->rotate) y encontrar una ayuda que rotaba un MC, pense que seria eso y no busque mas, pero que no sabia como utilizarlo. de todas formas, tampoco estoy nada contento con el funcionamiento de la ayuda de flash, porque si escribes rotation sin el guion bajo, no te aparece ningun tema de ayuda. despues de buscar rotate en la ayuda me parece ilogico que no aparezca en la ayuda relacionada de temas (en la parte inferior de la pagina que se este consultando) el metodo _rotation. tambien creo que un lenguaje como el AS 2 deberia tener un autocompletar mas util, que si escribieras el nombre de un MC, al escribir el '.' deberia desplegarse una lista con todos los metodos disponibles para los MC's, cosa que tienen todos los lenguajes orientados a objetos, o por lo menos todos los que he probado yo al igual que hace una distincion absurda entre minusculas y mayusculas al escribir los metodos y funciones asociadas a las distintas clases...la cuestion es si en AS 3 eso esta mejorado o no. tendre que echarle un vistazo, pero si lo sabes, comentamelo por favor.

siento el tono de mi ultima respuesta, pero estaba realmente desesperado y ya era la tercera vez que posteaba con lo mismo y estaba muy molesto porque nadie leyera o respondiera a mis dudas con la presion del tiempo y siendo una cosa que no me parecia de respuesta complicada como ha sido el caso.

quiero agradecerte de nuevo bryanisimo que te tomaras la molestia de responder.
muchisimas gracias y espero poder ayudarte con algo algun dia.

atentamente
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox
Citar            
MensajeEscrito el 08 Abr 2007 03:42 pm
Igual, aclaro el código que habías puesto inicialmente, no funcionaba porque habías puesto el código en un símbolo en lugar de hacerlo (como correspondía en este caso) en la línea de tiempo.

Además, si definís una variable como MovieClip, al poner el punto se despliegan las opciones, por ejemplo:

Código :

var nuevoMC:MovieClip = this.createEmptyMovieClip ("miMC", 1);

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 08 Abr 2007 10:33 pm
okis, muchas gracias. al final lo solucione. tengo un codigo en el que cuando se pulsa el movieclip, en el codigo del propio objeto una variable se vuelve true, y luego en el onEnterFrame, en la linea de tiempo, pregunto si esa varible vale true y en ese caso que me rote el MC en cuestion 90 grados con una funcion muy sencilla.
muchas gracias a ambos

un saludo a tod@s
atentamente
maije

Por maije

Claber

104 de clabLevel



Genero:Masculino  

Valladolid

firefox

 

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