Comunidad de diseño web y desarrollo en internet online

Texto deslizante segun posicion del raton

Citar            
MensajeEscrito el 24 Nov 2009 08:14 am
Hola a todos, este es mi primer post y la primera vez que pido ayuda por estos medios.-
Estaba queriendo hacer para una web un texto que esta enmascarado con una capa, el cual se corre hacia abajo o arriba dependiendo la posicion en y del raton con referencia a un mc.
Empece usando un stardrag pero como tengo que usar 2 de estos textos se me complico un poco y opte por este metodo. El problema es que no puedo darle limites para que el texto no se vaya a la miercoleh!
Intente tanto programarlo en el mc del texto como en un fotograma aparte.

Este es el codigo que estoy usando por ahora:

Código ActionScript :

mode = true;
vel = distancia;
VALOR = vel;
distancia = centro._y - _ymouse
texto._y += (vel / 10)

texto.onEnterFrame=function(){
   if (mode) { 
      if (up && _y<-376) { 
         vel=VALOR; 
   } else{
      vel =0
   }
   if (down && _y<+376) { 
      vel=VALOR; 
   } else{
      vel =0
   }
   if (right && _x<-415) { 
      vel=VALOR;  
   } else{
      vel =0
   }
   if (left && _x<+415) { 
      vel=VALOR; 
   }else{
      vel =0
   }
}

Es bastante simple, pero por alguna razon que, se qu estoy omitiendo, no me anda! :(
SI alguien me da un concejo, se lo agradecere enormemente!!!

[BOFH]Usando la etiqueta CODE puedes lograr mejor visibilidad[/BOFH]

Por franiche

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2009 08:36 am
franiche, veo varias errores conceptuales en lo que planteas, pero lo más jodido, sería el de calcular a "mano" con valores absolutos. No veo tampoco la referencia al MC en sí mismo. Y no usaría tanto el onEnterFrame, me parece sería mejor con un setInterval.

Te paso el código que yo tengo armado para hacer este tipo de scrolls, en el escenario existe básicamente un contenedor, dentro un mask, y un border. El código es para scrollear registros en realidad, pero las bases del calculo son las mismas.

Código ActionScript :

var Init_Alt:Number = _root.Scroller._height;
var Margen_Influencia_Scroll:Number = 15;
var Espacio_Entre_Renglones:Number = 30;
var Altura_Renglon:Number = 13;
var Velocidad_Scroll:Number = 0.5;
var Suavizado_Scroll:Number = 40;
var Ajuste_Final:Number = 4;

function roll_move(obj:Object):Void {

   calcDistances(Margen_Influencia_Scroll,_root.Scroller);

   if ((_root.Scroller.Holder._y*-1)>=0) {
      var mover_x:Number = obj.cx;
      var mover_y:Number = obj.cy;
      var velocidad:Number = obj.sv;
      var target_clip:MovieClip = obj.mc;
      target_clip._x += (mover_x-target_clip._x)/velocidad;
      target_clip._y += (mover_y-target_clip._y)/velocidad;
   } else {
      _root.Scroller.Holder._y = 0;
   }
   if ((_root.Scroller.Holder._y*-1)<=(_root.Scroller.Holder._height-_root.Scroller.Mask._height+Ajuste_Final)) {
      var mover_x:Number = obj.cx;
      var mover_y:Number = obj.cy;
      var velocidad:Number = obj.sv;
      var target_clip:MovieClip = obj.mc;
      target_clip._x += (mover_x-target_clip._x)/velocidad;
      target_clip._y += (mover_y-target_clip._y)/velocidad;
   } else {
      _root.Scroller.Holder._y = (_root.Scroller.Holder._height-_root.Scroller.Mask._height+Ajuste_Final)*-1;
   }
}

function calcDistances(Margen:Number, MC:MovieClip):Void {

   var posMC:Number = _root.Init_Alt+MC._y;
   var posMouse:Number = _root._ymouse;
   var resultPos:Number = posMC-posMouse;

   if (resultPos<Margen && resultPos>0) {

      if ((_root.Scroller.Holder._y*-1)<=(_root.Scroller.Holder._height-_root.Scroller.Mask._height+Ajuste_Final)) {
         _root.Scroll_Control.cy -= Velocidad_Scroll;
      }

   }

   var resultPos:Number = posMouse-MC._y;


   if (resultPos<Margen && resultPos>0) {

      if (_root.Scroller.Holder._y<0) {
         _root.Scroll_Control.cy += Velocidad_Scroll;
      }
   }

}

var Scroll_Control:Object = {};
Scroll_Control.cx = _root.Scroller.Holder._x;
Scroll_Control.cy = _root.Scroller.Holder._y;
Scroll_Control.sv = Suavizado_Scroll;
Scroll_Control.mc = _root.Scroller.Holder;

id_mover = setInterval(roll_move, 0, Scroll_Control);


Espero te sirva!!!

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 24 Nov 2009 08:39 am
jajajajaja... franiche, no te asustes con la respuesta de hernán...siempre queda la opción de la sección "Ejemplos", donde encontrarás algunos que te pueden servir XD

Por gersonm

Claber

2238 de clabLevel

12 tutoriales
1 articulo
5 ejemplos

Genero:Masculino   Desarrollador de GAIA

Al otro lado de la mira

firefox
Citar            
MensajeEscrito el 24 Nov 2009 03:50 pm
A la recontrisima!!! jajaja! con lo mio me mariaba, con lo tuyo hernan me consigo habitacion en el loquero jeje! creo que no estoy ni erca del nivel que requiere desifrar ese codigo...

gersonm, ya me lei 20 pag y busque unas 4 veces en este foro. Solo encontre scrolls con StarDrag >.<

Si lo desean puedo poner el .fla yo por ahora todavia no tengo idea de como arreglarlo. Igualmente, me sorprendio la rapidez en la respuesta a mi pregunta :D

Por franiche

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Nov 2009 06:11 pm
Te comento el código para que te sea más fácil de entenderlo:

Código ActionScript :

//Establezco la altura del clip a controlar
var Init_Alt:Number = _root.Scroller._height; 
// Establezco cuanto del borde superior o inferior me tengo que acercar para que el código funcione
var Margen_Influencia_Scroll:Number = 15; 
// Establezco la velocidad que moverá mi scroll para arriba o abajo el clip
var Velocidad_Scroll:Number = 0.5; 
// Determino que tan suave lo moverá 
var Suavizado_Scroll:Number = 40; 
// Determino un ajuste final para dejar algo de blanco y no cortar exactamente cuando termina el clip 
var Ajuste_Final:Number = 4; 
 
// Función principal para mover nada más 
function roll_move(obj:Object):Void { 

   // Calculo las distancias del mouse 
   calcDistances(Margen_Influencia_Scroll,_root.Scroller); 
    // Evalúo si el _y de mi clip, en valores positivos, es mayor o igual a 0, de lo contrario detengo el scroll y posiciono en 0 el _y
   if ((_root.Scroller.Holder._y*-1)>=0) { 
      // Valores por los cuales moveré al X, Y, Velocidad y a quien efectuaré el cambio (Declarados en Scroll_Control) 
      var mover_x:Number = obj.cx; 
      var mover_y:Number = obj.cy; 
      var velocidad:Number = obj.sv; 
      var target_clip:MovieClip = obj.mc; 
      // Calculo de aeasing sencillo, básicamente le digo, desde donde este parado mi clip, hace avanzar hasta la posición final, dividia por la velocidad. Esto causa que se ralentice el cambio. 
      target_clip._x += (mover_x-target_clip._x)/velocidad; 
      target_clip._y += (mover_y-target_clip._y)/velocidad; 
   } else { 
      _root.Scroller.Holder._y = 0; 
   } 

   // Evaluo que el _y de mi clip en positivo no sea menor a su altura menos el tamaño de la mascara más el ajuste final de blanco. Esto hara que se detenga solo cuando llegue al final. Si esto ocurre, reposiciono el clip sobre su altura, menos altura de la mascara más el ajuste final. 
   if ((_root.Scroller.Holder._y*-1)<=(_root.Scroller.Holder._height-_root.Scroller.Mask._height+Ajuste_Final)) { 
      // Mismos valores que antes 
      var mover_x:Number = obj.cx; 
      var mover_y:Number = obj.cy; 
      var velocidad:Number = obj.sv; 
      var target_clip:MovieClip = obj.mc; 
      target_clip._x += (mover_x-target_clip._x)/velocidad; 
      target_clip._y += (mover_y-target_clip._y)/velocidad; 
   } else { 
      _root.Scroller.Holder._y = (_root.Scroller.Holder._height-_root.Scroller.Mask._height+Ajuste_Final)*-1; 
   } 
} 
 
// Función de cálculo de distancia respecto al Mouse 
function calcDistances(Margen:Number, MC:MovieClip):Void { 

   // Posición inicial del mi MovieClip 
   var posMC:Number = _root.Init_Alt+MC._y; 
   // Posición del Mouse en _y
   var posMouse:Number = _root._ymouse; 
   // Posición del mouse respecto a mi MC 
   var resultPos:Number = posMC-posMouse; 
 
   // Si el resultado de esa resta es menor al Margen asignado y no es mayor a 0
   if (resultPos<Margen && resultPos>0) { 
 
      // Entonces solo si el _y positivo de mi MC es menor o igual a los valores de ajuste de finalización antes explicados
      if ((_root.Scroller.Holder._y*-1)<=(_root.Scroller.Holder._height-_root.Scroller.Mask._height+Ajuste_Final)) { 
      // Entonces asigno al control del objeto que mueve Y (Scroll_Control propiedad cy) la velocidad de movimiento necesaria.
         _root.Scroll_Control.cy -= Velocidad_Scroll; 
      } 
 
   } 
 
   // Recalculo la posición del Mouse 
   var resultPos:Number = posMouse-MC._y; 
 
   // Si la posición del mouse e menor al margen pero mayor a 0 
   if (resultPos<Margen && resultPos>0) { 

      // Entonces si el MC es menor a 0 
      if (_root.Scroller.Holder._y<0) { 
         // Ejecuto la velocidad necesaria de movimiento 
         _root.Scroll_Control.cy += Velocidad_Scroll; 
      } 
   } 
 
} 

// Creo el objecto de control
var Scroll_Control:Object = {}; 
Scroll_Control.cx = _root.Scroller.Holder._x; 
Scroll_Control.cy = _root.Scroller.Holder._y; 
Scroll_Control.sv = Suavizado_Scroll; 
Scroll_Control.mc = _root.Scroller.Holder; 

//Con setInterval hago que se chequee continuamente la función que "mueve" todo.
id_mover = setInterval(roll_move, 0, Scroll_Control);


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 24 Abr 2013 03:39 pm
Hola compañeros!!... alguno de udes podria subir el codigo con su respectivo flash para bajarlo y escrudiñarlo aca en mi pc!!... ya copie tal cual el ejemplo pero no me funciona... yo tengo una serie de imagenes que tengo dentro de un a capa mask y al simbolo q contiene todas las imagenes le puse Holder, las imagenes son simbolos de boton

saludos!! y muchas gracias!!!

[email protected]

Por ALEXMORENO1234

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 24 Abr 2013 03:40 pm
HOla!! yo tambien deseo si es posible que me pasaran los archivos fuente!!!

muchas gracias!!

[email protected]

Por ALEXMORENO1234

1 de clabLevel



 

msie

 

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