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

Podrían revisar este código, por favor...

Estas en el tema de Podrían revisar este código, por favor... en el foro de Flash y Actionscript en Foros del Web. Bueno, quisieran que vean este código, abajo , explico lo que quiero hacer con el. Lo he sacado de un libro del cual estoy aprendiendo ...
  #1 (permalink)  
Antiguo 29/04/2005, 10:43
Avatar de ¦David¦  
Fecha de Ingreso: abril-2005
Ubicación: /home/
Mensajes: 264
Antigüedad: 12 años, 7 meses
Puntos: 0
Podrían revisar este código, por favor...

Bueno, quisieran que vean este código, abajo , explico lo que quiero hacer con el.
Lo he sacado de un libro del cual estoy aprendiendo acerca de las variables, etc. y este es un ejemplo que me da el autor del libro , acerca de para qué podría utilizar las variables.Como recién empiezo con el AS en flash , quiero saber si estoy aprendiendo bien. Para eso me gustaría que me dieran sus opiniones , sean abiertos, por favor.

El libro se llama: Actionscript Programacion en flash
Autor: Julián Drault

Y esto dice:

El objetivo de este ejercicio es construir una puerta deslizable inteligente, típicamente presente en aeropuertos. Un pasajero (círculo), puerta derecha y puerta izquierda (rectángulos) serán nuestros actores estelares.También contamos con una linea punteada que hará límite de "area de deteccion" .El pasajero sera desplazado por todo el escenario mediante drag&drop. Cuando este ingrese en el area sensible (demarcada por las lineas de puntos), la puerta inteligente comenzara a abrirse , o bien se reiniciará su apertura desde el punto previo a la detección del pasajero (en caso de encontrarse en proceso de cierre).Sólo cuando el pasajero abandone el area de deteccion de la puerta, esta ultima comenzara a cerrarse.

Código:
 
var velocidad= 15; //velocidad de clausura-apertura
var apertura= 120; //distancia entre clausura-apertura
//Inicializacion de actores
var pasajero=_root.pasajero;
tvar puerta_der=_root.puerta_der;  //Esta linea me suena a que esta demás y encima dice "tvar"....
var puerta_izq=_root.puerta_izq;
var puerta_der=_root.puerta_der;
//Area sensible de deteccion de pasajeros
var limite_sup=_root.limite_sup._y;
var limite_inf=_root.limite_inf._x;
//Rango de movimiento de puertas
var p_i_c= puerta_izq._x;      //puerta izquierda cerrada
var p_i_a= puerta_izq._x - apertura;         // puerta izquierda abierta
var p_d_c= puerta_der._x;           // puerta derecha cerrada
var p_d_a= puerta_der._x + apertura;      //puerta derecha abierta
//Apertura de puertas
function desplazar_puertas (sentido) {
      if (sentido == "abrir") {
          _root.onEnterFrame=function () {
            if(puerta_izq._x > p_i_a && puerta_der._x < p_d_a) {
                 puerta_izq._x-=velocidad;
                 puerta_der._x+=velocidad;
              } else {
                  puerta_izq._x=p_i_a;
                  puerta_der._x=p_d_a;
                  _root.onEnterFrame=null;
          }
     }

} else if (sentido == "cerrar") {
         _root.onEnterFrame=function (){
           if(puerta_izq._x < p_i_c && puerta_der._x > p_d_c) {
            puerta_izq._x+=velocidad;
            puerta_der._x-=velocidad;
         }else {
             puerta_izq._x=p_i_c;
             puerta_der._x=p_d_c;
             _root.onEnterFrame=null;
         }
     }
  }
}
//movilidad pasajero
pasajero.onPress=function() {
    this.startDrag (0) ;
}
pasajero.onRelease=function (){
    this.stopDrag (0) ;
}
//Chequeo de ingreso a área sensible

_root.onMouseMove=function() {
    if (pasajero._y < limite_sup || pasajero._y > 52 limite_inf) {
        desplazar_puertas ("cerrar") ;
   } else {
        desplazar_puertas ("abrir") ;
    }
}
P/D: Cuando hago el ejercicio en Flash mx 2004 , me da errores, que ya ustedes sabran cuales son, por consecuencia, no me sale el ejercicio.

Espero , puedan ser pacientes conmigo y gracias por cada una de sus opiniones.
  #2 (permalink)  
Antiguo 29/04/2005, 11:13
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 10 meses
Puntos: 1
Los errores de sintaxis son en la linea donde tenes tvar, borra la "t"
En la linea donde tenes esto, creo que es la 54 fijate que al ultimo termino le falta un operador (+, *, - etc)
en la linea 30 te esta faltando un "{", fijate que tenes un else segido de un if sin la correspondiente llava.

Arragla esto y probalo es posible que te este dando un problema mas de una llave pero no estoy seguro

Suerte
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #3 (permalink)  
Antiguo 29/04/2005, 11:14
 
Fecha de Ingreso: febrero-2004
Ubicación: Carthagena
Mensajes: 205
Antigüedad: 13 años, 9 meses
Puntos: 0
Linea 5, tvar=var
Linea 58, dentro del if hay un numero 52, eliminalo.

Esto lo ves facilmente usando el icono de la ventana de Actionscript de Flash, que te dice los errores del codigo.
__________________
Retro Invaders : Mi blog
  #4 (permalink)  
Antiguo 29/04/2005, 11:18
 
Fecha de Ingreso: febrero-2004
Ubicación: Carthagena
Mensajes: 205
Antigüedad: 13 años, 9 meses
Puntos: 0
Ups. se me adelantaron...
__________________
Retro Invaders : Mi blog
  #5 (permalink)  
Antiguo 29/04/2005, 16:24
Avatar de ¦David¦  
Fecha de Ingreso: abril-2005
Ubicación: /home/
Mensajes: 264
Antigüedad: 12 años, 7 meses
Puntos: 0
Ahora, con respecto a las primeras lineas ¿Qué estaría yo almacenando en las variables? Entiendo que puedo almacenar, Numeros, Cadenas, Booleano, pero cuando esta _root.etc..... ¿Qué almaceno?

Última edición por ¦David¦; 29/04/2005 a las 16:29
  #6 (permalink)  
Antiguo 29/04/2005, 19:26
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 15 años, 10 meses
Puntos: 3
La ruta del mc
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #7 (permalink)  
Antiguo 29/04/2005, 22:23
Avatar de ¦David¦  
Fecha de Ingreso: abril-2005
Ubicación: /home/
Mensajes: 264
Antigüedad: 12 años, 7 meses
Puntos: 0
y es necesario, hacerlo?¿
En que me beneficia...?
Gracias.
  #8 (permalink)  
Antiguo 29/04/2005, 22:43
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Cita:
Iniciado por ¦David¦
y es necesario, hacerlo?¿
En que me beneficia...?
Gracias.
Yo te diría por cuestiones de legibilidad ya que sería más fácil escribir y recordar que tu variable X, hace referencia a la ruta del objeto Movieclip que se indica en el código, ímaginate que tienes objetos Movieclip anidados:

Código PHP:
 _root.uno.dos.tres._x 30;
 
_root.uno.dos.tres.metodo(); 
Tendrías que rescribir todo ese chorizote de letras para modificar propiedades o llamar métodos, almacenando la ruta del movieclip en una variable, reduciría en gran medida lo que tuvieras que escribir y por consecuencia lo haría mas legible.

Código PHP:
ubicacion _root.uno.dos.tres;
ubicacion._x 30;
ubicacion.metodo(); 
Ojalá te sea de ayuda.
  #9 (permalink)  
Antiguo 30/04/2005, 13:28
Avatar de ¦David¦  
Fecha de Ingreso: abril-2005
Ubicación: /home/
Mensajes: 264
Antigüedad: 12 años, 7 meses
Puntos: 0
Entiendo perfectamente...Gracias...
  #10 (permalink)  
Antiguo 30/04/2005, 13:47
Avatar de ¦David¦  
Fecha de Ingreso: abril-2005
Ubicación: /home/
Mensajes: 264
Antigüedad: 12 años, 7 meses
Puntos: 0
He arreglado todo lo que me dijeron (creo):
Código:
var velocidad= 15; //velocidad de clausura-apertura
var apertura= 120; //distancia entre clausura-apertura
//Inicializacion de actores
var pasajero=_root.pasajero;
var puerta_der=_root.puerta_der;  
var puerta_izq=_root.puerta_izq;
var puerta_der=_root.puerta_der;
//Area sensible de deteccion de pasajeros
var limite_sup=_root.limite_sup._y;
var limite_inf=_root.limite_inf._x;
//Rango de movimiento de puertas
var p_i_c= puerta_izq._x;      //puerta izquierda cerrada
var p_i_a= puerta_izq._x - apertura;         // puerta izquierda abierta
var p_d_c= puerta_der._x;           // puerta derecha cerrada
var p_d_a= puerta_der._x + apertura;      //puerta derecha abierta
//Apertura de puertas
function desplazar_puertas (sentido) {
      if (sentido == "abrir") {
          _root.onEnterFrame=function () {
            if(puerta_izq._x > p_i_a && puerta_der._x < p_d_a) {
                 puerta_izq._x-=velocidad;
                 puerta_der._x+=velocidad;
              } else {
                  puerta_izq._x=p_i_a;
                  puerta_der._x=p_d_a;
                  _root.onEnterFrame=null;
          }
     }
   }
} { else if (sentido == "cerrar") {
         _root.onEnterFrame=function (){
           if(puerta_izq._x < p_i_c && puerta_der._x > p_d_c) {
            puerta_izq._x+=velocidad;
            puerta_der._x-=velocidad;
         }else {
             puerta_izq._x=p_i_c;
             puerta_der._x=p_d_c;
             _root.onEnterFrame=null;
         }
     }
  }
}
//movilidad pasajero
pasajero.onPress=function() {
    this.startDrag (0) ;
}
pasajero.onRelease=function (){
    this.stopDrag (0) ;
}
//Chequeo de ingreso a área sensible

_root.onMouseMove=function() {
    if (pasajero._y < limite_sup || pasajero._y > 52*limite_inf) {
        desplazar_puertas ("cerrar") ;
   } else {
        desplazar_puertas ("abrir") ;
    }
}
Pero ahora me da esto:

**Error** Escena=Escena 1, capa=Capa 1, fotograma=1:Línea 30: Se ha encontrado un operador 'else' que no coincide con 'if'
} { else if (sentido == "cerrar") {

Total de errores de ActionScript: 1 Errores comunicados: 1

¿Cómo debo hacer que el else coincida con el if??

Última edición por ¦David¦; 01/05/2005 a las 02:12
  #11 (permalink)  
Antiguo 30/04/2005, 14:22
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 13 años
Puntos: 43
Hola David, este sería el código corregido.

Código PHP:
var velocidad 15;
//velocidad de clausura-apertura
var apertura 120;
//distancia entre clausura-apertura
//Inicializacion de actores
var pasajero _root.pasajero;
var 
puerta_der _root.puerta_der;
var 
puerta_izq _root.puerta_izq;
var 
puerta_der _root.puerta_der;
//Area sensible de deteccion de pasajeros
var limite_sup _root.limite_sup._y;
var 
limite_inf _root.limite_inf._x;
//Rango de movimiento de puertas
var p_i_c puerta_izq._x;
//puerta izquierda cerrada
var p_i_a puerta_izq._x-apertura;
// puerta izquierda abierta
var p_d_c puerta_der._x;
// puerta derecha cerrada
var p_d_a puerta_der._x+apertura;
//puerta derecha abierta
//Apertura de puertas
function desplazar_puertas(sentido) {
    if (
sentido == "abrir") {
        
_root.onEnterFrame = function() {
            if (
puerta_izq._x>p_i_a && puerta_der._x<p_d_a) {
                
puerta_izq._x -= velocidad;
                
puerta_der._x += velocidad;
            } else {
                
puerta_izq._x p_i_a;
                
puerta_der._x p_d_a;
                
_root.onEnterFrame null;
            }
        };
    } else if (
sentido == "abrir") {
        
_root.onEnterFrame = function() {
            if (
puerta_izq._x<p_i_c && puerta_der._x>p_d_c) {
                
puerta_izq._x += velocidad;
                
puerta_der._x -= velocidad;
            } else {
                
puerta_izq._x p_i_c;
                
puerta_der._x p_d_c;
                
_root.onEnterFrame null;
            }
        };
    }
}
//movilidad pasajero
pasajero.onPress = function() {
    
this.startDrag(0);
};
pasajero.onRelease = function() {
    
this.stopDrag(0);
};
//Chequeo de ingreso a área sensible
_root.onMouseMove = function() {
    if (
pasajero._y<limite_sup || pasajero._y>52*limite_inf) {
        
desplazar_puertas("cerrar");
    } else {
        
desplazar_puertas("abrir");
    }
}; 
Ojalá te sea de ayuda.
  #12 (permalink)  
Antiguo 30/04/2005, 14:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 338
Antigüedad: 13 años, 9 meses
Puntos: 2
Me parece a mi que esas puertas no se van a cerrar nuca.

} else if (sentido == "abrir") {

seria:

} else if (sentido == "cerrar") {

Un saludo
__________________
SiMpLiFiKa
http://www.manitasdelweb.com
  #13 (permalink)  
Antiguo 01/05/2005, 02:19
Avatar de ¦David¦  
Fecha de Ingreso: abril-2005
Ubicación: /home/
Mensajes: 264
Antigüedad: 12 años, 7 meses
Puntos: 0
Si es así, ahora lo estoy viendo porque solo se me cierra la puerta si salgo del limite inferior y no del superior.
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 18:18.