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

problema con el timepo.

Estas en el tema de problema con el timepo. en el foro de Flash y Actionscript en Foros del Web. Hola, estoy desarrolando un proyecto en flash. Ya llevo gran parte, pero tengo un gran problema. Quiero que un movieclip se mueva lentamente por la ...
  #1 (permalink)  
Antiguo 14/02/2004, 15:48
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
problema con el timepo.

Hola, estoy desarrolando un proyecto en flash.

Ya llevo gran parte, pero tengo un gran problema.

Quiero que un movieclip se mueva lentamente por la pantalla por accion de las Actionscripts.


Intente algo de Setimeout, pero no me salio.
Intente un ciclo for, pero es demasiado rapido.

Que puedo hacer para que mi movieclip se mueva en cierta direccion LENTAMENTE.

Por cierto, no quiero que me digan que lo haga por animacion, porque eso no me sirve para el proyrcto, necesito que sea por actionscripts.

Saludos
  #2 (permalink)  
Antiguo 14/02/2004, 22:43
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 20 años, 9 meses
Puntos: 406
Hola Instru:
Prueba con este code que lo debes de poner en el frame 1 de la línea de tiempo principal:

clip._x++;
if(clip._x>=400){
stop();
}
y en el frame 2 coloca: gotoAndPlay(1);
en la primera capa debes poner tu MC y aumentarle un fotograma simple, al colocar tu MC en el escenario tienes que ponerle un nombre, aquí use como nombre "clip"
Este code te hará que se mueva con lentitud pero se parará el MC en _x400, si quieres que se mueva más rápido allí donde dice en el code "clip._x++" cámbialo por clip._x=clip._x+5; este número 5 lo puedes cambiar por el que creas necesario según la velocidad de desplazamiento.

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #3 (permalink)  
Antiguo 15/02/2004, 11:53
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Gracias, si sirvio lo que dices, pero tengo un problema.
Este objeto que se supone que se debe mover, debe ser movido por accion de un boton. Quiero decir que al precionar una tecla del teclado empieze a moverse. Como en los frames no se pueden poner este tipo de eventos lo que hice fue hacerlo en un boton fuera del escenario.

Ahi estan todas las actionscripts.

Tambien otro problema esque no puedo tener mas de un frame en este escenario. (Cuestiones personales).

Lo que necesito es que en ese boton(imaginario, porque nunca se presiona ni se ve)esten las instrucciones para mover el objeto LENTAMENTE. exactamente como lo hisiste en el otro codigo.
Iugal, al llegar a cierta distancia, este para(en mi caso desaparece) y regresa al estado inactivo hasta volver a presionar el boton.

Espero que me haya explicado.

Saludos
  #4 (permalink)  
Antiguo 15/02/2004, 14:16
Avatar de dexter_x740  
Fecha de Ingreso: julio-2003
Ubicación: cd. obregon, Sonora
Mensajes: 246
Antigüedad: 20 años, 9 meses
Puntos: 1
prueba esto, ponle un nombre a tu mc opr ejemplo 'clip' , en el primer frame pon esto:
xpos=clip._x;
ready=false;

y al boton ponle:
on(keyPress"<enter>"){
ready=true;
}

y al clip ponle:
onClipEvent(enterFrame){
if((_root.ready)and(this._x>=400)){
this._x+=5;
}
if(this._<=400){
this._x=_root.xpos;
_root.ready=false;
}
}
  #5 (permalink)  
Antiguo 15/02/2004, 15:10
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Hola.

Parece ser que el codigo de dexter_x740 "medio" funciona.

Pero haber, voy a explicr como tengo esto.

En el primer frame de el escenario hay un stop(). Esto quiere decir que la animacion sera basada en movieclips y AS.
Tengo 2 movieclips. Uno es el objeto que el usuario maneja y otro solo se mueve al presionar "C". Pero este se mueve a la posision en donde esta el primer movieclip y despues ejecuta la animacion lentamente. Como voy a trabajar con coordenadas no puedo animar el movieclip con su linea del tiempo. Tengo que hacer que cambie su posision por medio de AS.

Este movieclip tiene 2 keyframes cada uno con su stop(); En el primer frame no hay nada, esta vacio porque el objeto esta "inactivo" al precionar "c" hay una instruccion(gotoandStop(2);) que pasa al seguno keyframe que contiene el objeto a desplazar(visible y activo).

Una vez en el segundo frame automaticamente debe empezar este dezplazamiento horizontal LENTAMENTE.

Esta animacion solo debe llegar al final de la pantalla. Despues debe pasar al modo inactivo, osea debe desaparecer.

Al volver a presionar "c" el movieclip debe retomar la posicion del primer movieclip(el que si se ve, el que manejamos) y volver a realizar el proceso.


El codigo de Bandot si funciono pero no es lo que necesito.
El de dexter_x740 solo se movia tantito a la derecha(DEMASIADO RAPIDO) y ahi se quedaba.

Necesito algo que pueda hacer este proceso porque ya intente de todo y no lo puedo lograr.

De todos modos gracias por su ayuda.

Saludos

Última edición por Instru; 15/02/2004 a las 15:12
  #6 (permalink)  
Antiguo 15/02/2004, 15:45
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Copia y pega FlashMX+

Código PHP:
//------------------------------------
//Prototipo para mover MC.. en su eje X
MovieClip.prototype.mueve = function(xfinaleasing) {
    
this.onEnterFrame = function() {
        if (
this._x<xfinal) {
            
this._x += Math.round(Math.ceil((xfinal-this._x)/easing));
        } else {
            
delete this.onEnterFrame;
        }
    };
};
//------------------------------------
//Creamos el CLip que moveremos
clip this.createEmptyMovieClip("a"1);
clip.moveTo(1010);
clip.lineStyle(10xFF0000);
clip.beginFill(0xFF0000);
clip.lineTo(1010);
clip.lineTo(2010);
clip.lineTo(2020);
clip.lineTo(1020);
clip.lineTo(1010);
//Cramos un Listener para la tecla
//Cuando la tecla RIGHT que es la de la flecha derecha =)
//Se oprima se ejecutara la accion 
escucha = new Object();
escucha.onKeyDown = function() {
    if (
Key.isDown(Key.RIGHT)) {
        
//Llamanos al proto mueve 
        
clip.mueve(50010);
    } 
};
Key.addListener(escucha); 
Esto no es el Codigo exacto para lo que necesitas....

Ya tienes 3 codigos los cuales los puedes estudiar y adaptarlos a tus necesidades ahora si esperas que alguien te haga exactamente lo que necesitas esperate sentado....

Saludos!!
  #7 (permalink)  
Antiguo 16/02/2004, 18:48
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Ya pude resolver mi problema de una forma que no afectara las condiciones que yo puse.

Ya que la "ayuda" de TMeister nos deja(a por lo menos me deja) con demasiadas dudas, mejor yo explico BIEN Y COMO LE HIZE para resolver esto.

Primero en la linea del tiempo del movieclip introduci un estado mas, este estado solo era un tiempo de frame. ¿que es eso?

Pues un frame que simplemente hace tiempo.

Bueno en el primer frame de este clip(el estado inactivo) declare la variable x. en el segundo frame(estado activo) x aumantaba en 1(o en lo que fuera dependiendo la velocidad requerida)
Despues al movieclip viendolo desde la escena se le sumaba el valor que iba adquiriendo x. Por ejemplo
Al presionar "c" se pasa al modo activo, y empieza a reproducirse. Del activo pasa al tercer frame que lo unico que hace es regresar al segundo frame. De vuelta en el segundo frame se incrementa x y se lo suma a la posision actual en el escenario.
En el segundo frame tambien inclui una condicion. Si la posicion del clip es igual o mayor de 500, pasar al modo inactivo donde habra un stop para que ahi se quede y vuelva a ser invocado al volver a presionar c.


HEHE no he revelado mi codigo.
no se preocupen, si lo hare. Es el siguiente:


En el movie clip en el primer frame(inactivo, vacio)

stop ();
var x=0

En el segundo frame(activo)

x = x++; //Puede variar para modificar la velocidad
_root.miclip._x = +x;
if (_root.miclip._x>=500) {
_root.miclip.gotoAndStop(1);
}

Y en el tercer frame(activo pero de tiempo)

_root.miclip.gotoAndPlay (2);

Y al presionar c (el codigo dentro del boton)

_root.miclip.gotoAndPlay(2);



Gracias por su ayuda sobre todo lasde los primero, porque la ultima pues era inteligente y con buen proposito pero no ayudo mucho.

Saludos
  #8 (permalink)  
Antiguo 16/02/2004, 19:22
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Mi ayuda fue inutul ni hablar...

Saludos!!
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 12:01.