Estoy modificando un movie que encontré en Flashkit y me gusto mucho. Lo eh publicado en esta direccion con su fla. Haber si me pueden dar una mano.
http://www.taita.viaperu.com/publicaciones/pruebas/paraestudio.html
El chiste es que pensé convertirlo a menú y lo logre, pero ahora quiero agregarle ese no sequé que le de "cache" je,je,je.
Bueno el menú funciona de la siguiente forma, aparecen los botones flotando en forma elipse e interactúan con el Mouse (de acuerdo a la posición de Mouse se desplazan ligeramente lateralmente) y cuando le hago RollOver a cada botón estos se encienden (pero no dejan de seguir flotando) y se le doy clic va a la sección indicada.
Durante la trayectoría que siguen los botones, cada uno esta dentro de un movie, estos movies también realizan funciones de xscale y yscale que están programadas en primer frame de la película general, para que de la sensación de que se acercan y se alejan.
Aquí esta el código del prototype que va en el primer frame:
movieclip.prototype.move = function(xmid, ymid, radiusx, radiusy) {
if (_x>ymid) {
gap = _x-ymid;
} else {
gap = ymid-_x;
}
//
if (_root._xmouse<ymid) {
ypos = ymid-_root._xmouse;
} else {
ypos = _root._xmouse-ymid;
}
//
speed = ypos/20;
if (ypos>50) {
speed = 1;
}
//
if (_root._xmouse<ymid) {
if (wheel<(360-speed)) {
wheel += speed;
} else {
wheel = 0;
}
} else {
if (wheel>(-360+speed)) {
wheel -= speed;
} else {
wheel = 0;
}
}
//
if (wheel>0 && wheel<=180) {
_xscale = 100-(gap/10*4);
_yscale = 100-(gap/10*4);
} else if (wheel>180 && wheel<=360 || wheel<0 && wheel>=-180) {
_xscale = 60-((40-gap)/10*3);
_yscale = 60-((40-gap)/10*3);
} else if (wheel>-360 && wheel<=-90) {
_xscale = 100-(gap/10*4);
_yscale = 100-(gap/10*4);
}
//
_y = xmid+Math.sin(wheel*Math.PI/180)*radiusx;
_x = ymid-Math.cos(wheel*Math.PI/180)*radiusy;
};
Cada movie también tiene programado un rango de acción en donde puede desplazarse según move. Algo así:
onClipEvent (load) {
this.text = "conectividad"
wheel = 300;
}
onClipEvent (enterFrame) {
move(160,110,10,70);
}onClipEvent (enterFrame) {
move(160,110,10,70);
}
Lo que yo intentaba hacer es que cuando haga un RollOver sobre cualquier botón, el resto de botones se pongan en línea _X con ese, estuviese ese botón donde estuviese (como les repito esta flotando y puedo pillarle por cualquier lugar del stage)
Así que cuando intente programar los botones que están dentro de cada movie, me di una gran sacudida, porque no encuentro la forma de hacerlo correctamente.
Esto fue lo que intente hacer, para que vean que eh intentado hacer mi tarea.
Primero.- Lo que hice fue darle nombre a cada estancia de movie, para intentar por el nombre de estancia controlar el _X de los movie, algo así:
Web._X=150
Con._X=150 etc.
(Donde web y con son los nombres de instancia)
Pero en la práctica cuando lo hago los botones aparecen por un instante alineados y en menos de un segundo vuelven a su sito y yo quiero que se formen en línea por suavemente (por easing).
Segundo.- Cuando intente declarar un easing en el primer frame debajo del prototype declarado tampoco funcionaba.
Tercero.- intente trabajar con la misma función move en el RollOver del botón pero igual no funcionaba, de estas formas:
On rollOver {
move(160,110,10,70); (y también con esta otra)
web.move(160,110,10,70);
}
Estoy convencido que debo trabajar con las funciones declaradas en el prototype pero no se como hacerlo correctamente porque no comprendo muy bien todo el código de este, por salli hay una variable Wheel y unas ecuaciones al final que me marearon. (lo veo gigante para mi, que recién me meto al AS)
Otra cosa que me preocupa es el hecho de que este menú fue desarrollado en flash 5 y yo lo he actualizado a Flash MX 2004 porque es lo que tengo, no se si por allí la compatibilidad entro el soporte para action script signifique un problema.
Lo ultimo que se me ocurre es que usar este prototype, del cual recién me eh enterado investigando sea demasiado obsoleto, leí un mensaje del foro sobre el soporte de action script para la programación orientada a objetos, que es mucho mejor de repente por allí esta mi solución y no usando este proptotype, me estoy documentando, ya que de programación orientado a objetos en AS se tanto como astronomía. Este es el link de dicho post http://www.cristalab.com/foros/viewtopic.php?t=1128&highlight=easing
Ahora mi sentido arácnido me dice que:
Primero.- Que me olvide del AS y siga en After Effects
Segundo.- Soy mas burro que el burro de Shrek
Tercero.- Ahora si en serio, que lo correcto según mi lógica es que debo manejar desde el RollOver del boton la función move, pero como esta función también esta declarada en el movie que contiene al boton la cosa no será tan fácil, ya que choco con todo con los scale y que debo encontrar que función clave usar o crear una ecuación en base a la información del prototype y esta ecuación debe tener en cuenta el _xmouse ó la ubicación actual de botón sobre el cual estoy.
Cuarto.- Lo que taro de hacer es contranatural ósea no se puede.
Quinto.- Se puede por Programación orientada a objetos. Ojo debe correr con el flash placer 7 para abajo porque descubrí hace poco un problema con el 8 y esto se los comento por si les pasa. Flash 8 no se instala automáticamente en PCs con Windows XP que no corren en modo administrador, es necesario que este el XP en administrador si no nunca se instala y por lo tanto quedan mal con sus clientes, ya me paso por eso no hago nada en Flash 8.
Espero contar con la ayuda de algún alma caritativa que me oriente o me enseñe como solucionar este problemita en el que me eh metido. Desde ya muchas gracias a todos por haber leido este post.
Josman
No se olviden que las fuentes y el swf lop ueden apreciar en:
http://www.taita.viaperu.com/publicaciones/pruebas/paraestudio.html
