Foros del Web » Creando para Internet » Flash y Actionscript »

Ralentizar movimiento de Profundidad

Estas en el tema de Ralentizar movimiento de Profundidad en el foro de Flash y Actionscript en Foros del Web. Hola! Tengo unos MC con efectos de profundidad(en AS2), pero mi problema esque al hacer MouseOver en los del fondo,viene muy rápido para alante, cosa ...
  #1 (permalink)  
Antiguo 28/11/2008, 09:59
Avatar de NaRanJiTo78  
Fecha de Ingreso: noviembre-2007
Ubicación: In the BeaCh
Mensajes: 874
Antigüedad: 16 años, 5 meses
Puntos: 10
Ralentizar movimiento de Profundidad

Hola!

Tengo unos MC con efectos de profundidad(en AS2), pero mi problema esque al hacer MouseOver en los del fondo,viene muy rápido para alante, cosa que me gustaría ralentizar...

Alguien me puede ayudar?

Podeis verlo en http://www.jarmauto.es/acceso/index12.html

Gracias!!!
  #2 (permalink)  
Antiguo 28/11/2008, 10:04
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Ralentizar movimiento de Profundidad

depende de como sea la funcion que trae acia delante tediria una o otra forman de hacerlo XD
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #3 (permalink)  
Antiguo 28/11/2008, 12:08
Avatar de NaRanJiTo78  
Fecha de Ingreso: noviembre-2007
Ubicación: In the BeaCh
Mensajes: 874
Antigüedad: 16 años, 5 meses
Puntos: 10
Pregunta Respuesta: Ralentizar movimiento de Profundidad

Ok jeje...He aqui:

Cita:
var archivo:String;
var archivoGrande:String;
var reduce:Number;
var ESCALAX:Number=this._xscale;
var ESCALAY:Number=this._yscale;



archivo="thumbs/" + this._name + ".jpg";
trx_mc.loadMovie(archivo);

this.Alejar();
this.Reducir();

function Alejar(){

this.swapDepths( this._y );
}

function Reducir(){

reduce=this._y / 16.5;
reduce=reduce * 0.07;

//Reduccion
this._xscale=this._xscale*reduce;
this._yscale=this._yscale*reduce;
}

orig_x = this._x; // Origen en X
orig_y = this._y; // Origen en Y


onEnterFrame = function(){

dest_x = orig_x + ( ( 275 - _root._xmouse ) * ( this._xscale / 100 ) );


incr_x = ( dest_x - this._x ) / 10;

this._x += incr_x;


dest_y = orig_y - (_root._ymouse / 20 );

incr_y = ( dest_y - this._y ) / 10;
this._y = dest_y;
}


onRollOver=function(){
this._xscale=ESCALAX;
this._yscale=ESCALAY;
this.swapDepths( 8000 );
}

onRollOut=onReleaseOutside=function(){
Reducir();
Alejar();
}
  #4 (permalink)  
Antiguo 28/11/2008, 12:24
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Ralentizar movimiento de Profundidad

Código PHP:
var archivo:String;
var 
archivoGrande:String;
var 
reduce:Number;
var 
ESCALAX:Number=this._xscale;
var 
ESCALAY:Number=this._yscale;



archivo="thumbs/" this._name ".jpg";
trx_mc.loadMovie(archivo);

this.Alejar();
this.Reducir();

function 
Alejar() {

    
this.swapDepthsthis._y );
}

function 
Reducir() {

    
reduce=this._y 16.5;
    
reduce=reduce 0.07;

    
//Reduccion
    
this._xscale=this._xscale*reduce;
    
this._yscale=this._yscale*reduce;
}

orig_x this._x;// Origen en X
orig_y this._y;// Origen en Y


onEnterFrame = function(){

dest_x orig_x + ( ( 275 _root._xmouse ) * ( this._xscale 100 ) );


incr_x = ( dest_x this._x ) / 10;

this._x += incr_x;


dest_y orig_y - (_root._ymouse 20 );

incr_y = ( dest_y this._y ) / 10;
this._y dest_y;
};

function 
Escala(mc1,datax,datay,tiempo) {
    
import mx.transitions.Tween;
    
import mx.transitions.easing.*;
    var 
fxAlphaMCx = new Tween(mc1"_xscale"Strong.easeOut,mc1._xscaledataxtiempotrue);
    var 
fxAlphaMCy= new Tween(mc2"_yscale"Strong.easeOut,mc1._yscale,dataytiempotrue);

onRollOver=function(){
    
Escala(this,ESCALAX,ESCALAY,3)
this.swapDepths8000 );
};

onRollOut=onReleaseOutside=function(){
Reducir();
Alejar();
}; 
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #5 (permalink)  
Antiguo 28/11/2008, 12:32
Avatar de NaRanJiTo78  
Fecha de Ingreso: noviembre-2007
Ubicación: In the BeaCh
Mensajes: 874
Antigüedad: 16 años, 5 meses
Puntos: 10
Respuesta: Ralentizar movimiento de Profundidad

Lynxcraft, por lo que veo, hay que añadir:

Cita:
function Escala(mc1,datax,datay,tiempo) {
import mx.transitions.Tween;
import mx.transitions.easing.*;
var fxAlphaMCx = new Tween(mc1, "_xscale", Strong.easeOut,mc1._xscale, datax, tiempo, true);
var fxAlphaMCy= new Tween(mc2, "_yscale", Strong.easeOut,mc1._yscale,datay, tiempo, true);
}
Pero donde modifico los valores de ralentizacion?

Muchas gracias
  #6 (permalink)  
Antiguo 28/11/2008, 13:19
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Ralentizar movimiento de Profundidad

revisa esto http://www.tutoriales-flash.com/tutorial.asp?id_tuto=24 asi sabras como funciona el tiempo es el valor que relentiza entre mas alto sea el numero mas lenta es la animacion y la funcion se activa asi

onRollOver=function(){
Escala(this,ESCALAX,ESCALAY,3)
this.swapDepths( 8000 );
};
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #7 (permalink)  
Antiguo 29/11/2008, 12:22
Avatar de websmonerris  
Fecha de Ingreso: junio-2008
Ubicación: La Vila Joiosa
Mensajes: 89
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ralentizar movimiento de Profundidad

Ey naranjito veo que le estas sacando bastante provecho, sobre la duda que tienes te puedo decir que para que los mc de detras se muevan más lentos podemos pensar en una regla de tres:

Tenemos los ejes del flash que la esquina superior izquierda es el punto 0,0 pues entonces cuando el movieclip se encuentre mas cerca de y=0 este tendra un incremento de x menor... Como hacer esto? pues como te dicho una regla de tres con una variable por ejemplo movimiento que se cada vez menor segun su posicion en y porque esta se movera mas deprisa cuando este en y(limite inferior) y mas lento cuadno se acerque a 0... Se que es un poco rayada, pero puedes sentarte con un boli y un papel en blanco y empezar a sacar calculos...

Seguro que hay maneras más sencillas... en el fla que te pase se mueve segun su escala, pero por lo que veo tus movieClips tienen todos la misma escala.

Posdata:Te conteste a tu privado.
__________________
Aplicaciones y Desarrollo Web
websmonerris.es
Blog Monerris (Flash, PHP y más)
monerris.wordpress.com
  #8 (permalink)  
Antiguo 01/12/2008, 03:27
Avatar de NaRanJiTo78  
Fecha de Ingreso: noviembre-2007
Ubicación: In the BeaCh
Mensajes: 874
Antigüedad: 16 años, 5 meses
Puntos: 10
Respuesta: Ralentizar movimiento de Profundidad

Cita:
Iniciado por Lynxcraft Ver Mensaje
revisa esto http://www.tutoriales-flash.com/tutorial.asp?id_tuto=24 asi sabras como funciona el tiempo es el valor que relentiza entre mas alto sea el numero mas lenta es la animacion y la funcion se activa asi

onRollOver=function(){
Escala(this,ESCALAX,ESCALAY,3)
this.swapDepths( 8000 );
};
Hola Lynxcraft, copiando eso por mucho que cambie los valores, al hacer rollOver el mc se va alejando poco a poco hasta desaparecer, aunque ponga valores negativos, no entiendo...

Si uso la clase tween, como me pusiste, puedo utilizarla aparte en el script general o en cada mc?

-------


Que pasa Webmonerris!

Gracias por contestar.

El caso esque me gustaría saber en que parte de función pongo las variables, aqui?

Cita:
onRollOver=function(){
this._xscale=ESCALAX;
this._yscale=ESCALAY;
this.swapDepths( 8000 );
}
  #9 (permalink)  
Antiguo 01/12/2008, 03:41
Avatar de NaRanJiTo78  
Fecha de Ingreso: noviembre-2007
Ubicación: In the BeaCh
Mensajes: 874
Antigüedad: 16 años, 5 meses
Puntos: 10
Respuesta: Ralentizar movimiento de Profundidad

Me gustaría también preguntar para que, al mover el raton por diferentes partes de la pantalla, se moviesen los mc más lentos, y que no se saliesen del cuadro por el que la escena está delimitado...alguna idea?

Gracias!
  #10 (permalink)  
Antiguo 01/12/2008, 11:36
Avatar de websmonerris  
Fecha de Ingreso: junio-2008
Ubicación: La Vila Joiosa
Mensajes: 89
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ralentizar movimiento de Profundidad

Ey naranjito!!! jejeje

He vuelto.... XD...
Primero voy a contestar a lo que has preguntado primero:
Cita:
onRollOver=function(){
this._xscale=ESCALAX;
this._yscale=ESCALAY;
this.swapDepths( 9000 );
}

onRollOut=onReleaseOutside=function(){
Reducir();
Alejar();
}
Este codigo se encuentra en cada movieClip foto, es decir en cada foto o en el movieClip que has utilizado para cargar las fotos. Bien fijate que tenemos onRollOut y onReleaseOutside por si pincha en él pero mueve el raton y suelta fuera, en el evento tenemos estas dos funciones

Reducir()-> esta se encarga de establecer el tamaño sin que este el raton sobre el, esta funcion estará también como lo anterior:
Cita:
function Reducir(){
//Porcentaje a reducir
reduce=this._y / 16.5;
reduce=reduce * 0.05;

//Reduccion
this._xscale=this._xscale*reduce;
this._yscale=this._yscale*reduce;
}
en este caso estamos aprovechando la posición en y del objeto en vez de utilizar este trozo de código directamente puedes saber la escala y darle los valores que quieras sin determinar un porcentaje...

Sobre la funcion Alejar lo mismo que reducir()...

Cita:
function Alejar(){
//Profundidad asociada
this.swapDepths( this._y );
}
En ella como sabes dependemos de su posición en el ejey aunque puedes determinar tu la profundidad que quieras directamente....

En resumen lo que tenemos es dos funciones que se activan cuando el raton no esta sobre este, estas funciones se pueden coger el codigo y meterlo en el mismo evento, pero todo esto en el !!!en el movieclip que se utiliza como foto!!!

Lo segundo que has preguntado:
Lo que podemos es utilizar un if(condicion) antes de asignarle su nueva posicion y, esta condicion puede evaluar cual va a ser la posicion futura del movieClip antes de asignarlo y si se sale de lo que quieras que no haga lo de dentro del if y no asigne nueva posicion y que esta se quede en su sitio....
Por Ejemplo si tenemos lo siguiente en el codigo (mas o menos):

Cita:
this._x += incr_x;
Pues lo cambiamos por:

Cita:
futuraposicion=this._x+incr_x;

if(futuraposicion>(posicion -X lado derecho max) || futuraposicion<(posicion -X lado izquierdo min){
this._x=futuraposicion;
}
Con esto evaluariamos hasta donde se puede mover, como se puede saber hasta donde quieres que llegue pues si tu fla es muy grande puedes utilizar un trace(this._x) para saber mas o menos hasta donde debe llegar (saldra por pantalla la posicion, trace es para depurar si se te olvida quitarlo cuando el fla es publicado no afecta para nada ni sale)... Lo hemos realizado para x pero para y es exactamente igual xDD...


Lo tercero que has preguntado:

Esto es más o menos lo mismo, evaluando la posición del mouse si se encuentra en un area
y sino se encuentra en esa area que se comporte de manera diferente:

Cita:
//este if nos devuelve true si el raton se encuentra en el area deseada
if(_root._xmouse>LADOIZQ && _root._xmouse<LADODER && _root._ymouse>LADOSUP && _root._ymouse<LADOINF){
//hacemos lo que queremos en nuestro caso que el incremento de x e y sea menor
}else{
//hacemos cuando el mouse no esta por encima del area
}
Esta podría ser una opción... Espero que te sirva de ayuda! me alegro que le estes sacando partido!

POSDATA: La web esta del enlace es la que estas realizando en serio?
Si es así la cosa no pinta mal, esta muy bien le faltan lo ultimos retoques!
__________________
Aplicaciones y Desarrollo Web
websmonerris.es
Blog Monerris (Flash, PHP y más)
monerris.wordpress.com
  #11 (permalink)  
Antiguo 01/12/2008, 11:40
Avatar de websmonerris  
Fecha de Ingreso: junio-2008
Ubicación: La Vila Joiosa
Mensajes: 89
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ralentizar movimiento de Profundidad

Una cosita que puedes mejorar, agusto del consumidor, es que cuando el mouse se salga del recuadro swf este no actue esto lo conseguiremos de forma similar a lo anterior explicado XD
__________________
Aplicaciones y Desarrollo Web
websmonerris.es
Blog Monerris (Flash, PHP y más)
monerris.wordpress.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:53.