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

Pregunta Extremadamente COMPLEJA!!!!Solo expertos

Estas en el tema de Pregunta Extremadamente COMPLEJA!!!!Solo expertos en el foro de Flash y Actionscript en Foros del Web. Hola un saludo a los maestros Mi pregunta es la siguiente de un proyecto que quiero hacer!!!! Hagan en cuenta que tengo un mapa de ...
  #1 (permalink)  
Antiguo 13/04/2004, 15:57
 
Fecha de Ingreso: febrero-2002
Mensajes: 17
Antigüedad: 22 años, 9 meses
Puntos: 0
Pregunta Extremadamente COMPLEJA!!!!Solo expertos

Hola un saludo a los maestros
Mi pregunta es la siguiente de un proyecto que quiero hacer!!!!

Hagan en cuenta que tengo un mapa de carretera y quiero saber que distancia hay de un punto A hasta B, para hacerlo mas facil mi explicacion ;lo que tengo que hacer es lo siguiente EJ:

Digamos que es el mapa de america
1.- Presiono primero en el mapa flash el pais CANADA luego presiono Chile, en ese momento me tiene que salir una animacion de un avion siguiendo una ruta y marcandola de un color diferente,al llegar al destino me presenta datos como la distacia recorrida...

de eso se trata mi pregunta y asi las diferentes posibilidades si cojo CHILE y luego ECUADOR,

espero que me puedan ayudar
o grandes maestros....
__________________
visita mi pagina http://animacionj.8k.com
  #2 (permalink)  
Antiguo 13/04/2004, 18:11
 
Fecha de Ingreso: febrero-2002
Ubicación: Valencia - España
Mensajes: 488
Antigüedad: 22 años, 9 meses
Puntos: 0
lo normal seria que tuvieras todas las posibilidades de ORIGEN -> DESTINO en una BBDD y luego muestres los datos anteriormente introducidos.
__________________
webmaster de xematuning el mejor tuning español con más de 25000 fotos sobre el mundo del tuning, videos, salvapantallas, fondos y mucho más no lo dudes más y visítala!!!
  #3 (permalink)  
Antiguo 14/04/2004, 09:05
 
Fecha de Ingreso: febrero-2002
Mensajes: 17
Antigüedad: 22 años, 9 meses
Puntos: 0
Ya listo eso puedo hacerlo, poner todas las rutas posibles en una base de datos hecha en Acess o SQL, pero ahora como hago para poder llamar los datos y presentarlos en el flash y ejecutar la animacion de la ruta...

Plissssss
__________________
visita mi pagina http://animacionj.8k.com
  #4 (permalink)  
Antiguo 15/04/2004, 18:15
 
Fecha de Ingreso: febrero-2002
Mensajes: 17
Antigüedad: 22 años, 9 meses
Puntos: 0
HOLA NADIE ME AYUDAAAA
__________________
visita mi pagina http://animacionj.8k.com
  #5 (permalink)  
Antiguo 16/04/2004, 03:21
 
Fecha de Ingreso: marzo-2004
Mensajes: 338
Antigüedad: 20 años, 8 meses
Puntos: 2
Bufff, bueno yo no soi ningun maestro compañero pero s m ocurre algo haber si t sirve, solo espero q no tengas q realizar muxas combinaciones.

Lo q podrias hacer es t creas todos los campos d texto q necesites para los paises q quieras y les pones d nombre d instancia "paisN" siendo N = 1,2,3... y al lao d cada campo d texto t creas un boton (pones una bandera u on raddio button lo q quieras) y t creas una capa "acciones1" y aqui pones
-------------------------------------------------------------------------------
activa_pais = function()
{
i = ¡ + 1;
if ( i == 1)
{
var pais1 = paisN.text;
}
else
{
var pais2 = paisN.text;
}
}
pais_butN.onRelease = activa_pais
--------------------------------------------------------------------------------
Tendrías q repetir esta accion para cada boton en el action frame siendo N = 1, 2, 3,...

t creas otra capa llamada "acciones2" y aqui pones
--------------------------------------------------------------------------------var i;
if (i ==1)
{
gotoAndStop(5); //Aqui deberias poner un mensaje q t digera
//que debes elegir el pais destino
}
if (i == 2)
{
proces.text = "procesando datos..."; //create el campo de texto
//proces
form_lv = new LoadVars();
form_lv.pais1 = pais1;
form_lv.pass2 = pais2;
form_lv.sendAndLoad("calcula.php", form_lv, "POST");
form_lv.onLoad = function() {
if (this.estatus != null) //consulta correcta
{
proces.text = "";
distancia.text = this.distancia;
gotoAndStop(N);//animacion del avion
}
else
{
proces.text = "Problemas con el servidor";
}
}
------------------------------------------------------------------------------------

y x ultimo t crearias un php llamado calcula mas o menos asi
-----------------------------------------------------------------------------------
//aqui tu conexion a la base de datos

if(isset($_POST["pais1"]) && isset($_POST["pais2"]))
{
$pais1 = $_POST["pais1"];
$pais2 = $_POST["pais2"];
$pais3 = $pais1."+".$pais2;
$result = mysql_query("SELECT distancia FROM tu_tabla WHERE combina_pais='$pais3");
if($row = mysql_fetch_array($result))
{
$distancia = $row["distancia"];
echo "&distancia=$distancia&";
}
}
-----------------------------------------------------------------------------------

Bueno mas q nada espero q t sirva un poco d guia x q sus fallos tendra seguro, tambien lo podrias hacer sin base d datos, aunq eso ya depende del numero d combinaciones, aunq m imagino q seran bastantes.

Bueno un saludo y espero q esto t sirva d algo

***********************CHEM*********************** **
  #6 (permalink)  
Antiguo 16/04/2004, 03:59
 
Fecha de Ingreso: marzo-2004
Mensajes: 338
Antigüedad: 20 años, 8 meses
Puntos: 2
bueno ya estoi viendo mi primer error grave, jeje, no he inicializado i.
deberias inicializar i a 0, pero bueno no t compliques la vida create mejor tres keyframes en el primero pones
------------------------------------------------------------------------------------
activa_pais = function()
{
var pais1 = paisN.text;
proces.text = "Elegir pais destino";
gotoAndStop(2);
}
pais_butN.onRelease = activa_pais
-----------------------------------------------------------------------------------
y en el segundo pones
-----------------------------------------------------------------------------------
activa_pais = function()
{
var pais2 = paisN.text;
proces.text = "Procesando datos";
gotoAndStop(3);
}
pais_butN.onRelease = activa_pais
------------------------------------------------------------------------------------
y en el 3
------------------------------------------------------------------------------------
form_lv = new LoadVars();
form_lv.pais1 = pais1;
form_lv.pass2 = pais2;
form_lv.sendAndLoad("calcula.php", form_lv, "POST");
form_lv.onLoad = function() {
if (this.estatus != null) //consulta correcta
{
proces.text = "";
distancia.text = this.distancia;
gotoAndStop(N);//animacion del avion
}
else
{
proces.text = "Problemas con el servidor";
}
-----------------------------------------------------------------------------------
__________________
SiMpLiFiKa
http://www.manitasdelweb.com

Última edición por chem; 16/04/2004 a las 04:02
  #7 (permalink)  
Antiguo 17/04/2004, 19:00
Avatar de inerte  
Fecha de Ingreso: enero-2004
Ubicación: buenos aires
Mensajes: 242
Antigüedad: 20 años, 10 meses
Puntos: 0
en el último de los casos, si no te sale, puedes hacerlo "artesanalmente" pon botones en un cuadro que diga ejemplo "pais de origen" cada pais hace un "goto" a un frame donde hay otro cuadro con todos los países, y dice "pais de destino" y según el que el usuario elija, otro "goto" a un frame con la respectiva animación, datos, etc. que desees mostrar... eso si, el layer va a tener mas de 600 frames donde se repite constantemente el mismo mapa, y lo unico que cambia es el recorrido del avioncito; pero no por ello el movie ha de pesar mucho mas...

está bien.... ésta no es la forma de hacerlo....
lo sé, lo sé !!!
pero funciona !
  #8 (permalink)  
Antiguo 19/04/2004, 10:19
 
Fecha de Ingreso: febrero-2002
Mensajes: 17
Antigüedad: 22 años, 9 meses
Puntos: 0
Gracias Inerte y Chem por las repuestas la forma artesanalmente yo la habia planteado es mas facil pero no es lo que quiero hacer ppor que no puedes seleccionar el pais origen y luego presionar el pais destino, y luego se ejecute la animacion y aparescan los datos... voy a intentar la respues ta de chem .. gracias:)
__________________
visita mi pagina http://animacionj.8k.com
  #9 (permalink)  
Antiguo 19/04/2004, 11:16
Avatar de Solid  
Fecha de Ingreso: enero-2003
Ubicación: Argentina
Mensajes: 180
Antigüedad: 21 años, 9 meses
Puntos: 0
lo que tendrías que hacer es saber a que escala esta hecho tu mapa.
Despues, con los dos puntos (origen, destino) armas un triangulo rectangulo y calculas la hipotenusa utilizando pitagoras. de esa manera tenés la longitud recorrida en pixeles, y luego sabiendo la escala del mapa la podes convertir a los kilometros que quieras...

esto es lo mejor de lo mejor, porque podes partir de cualquier punto x a cualquier punto y sin necesidad de que sean lugares preestablecidos...es decir, tenes absoluta libertad de movimiento...

de todas maneras, si por algun motivo en particular lo que querés hacer es restringir esa libertad, entonces preestableces las ubicaciones y le asignas a cada una su posicion x,y correspondiente y ya.

Estos mismos datos son los que tenes que utilizar luego para trazar la direccion del recorrido del avion. Tambien los vas a necesitar para calcular las coordenadas de cada uno de los puntos que conforman la trayectoria del avion...
__________________
Just because I rock doesn't mean I'm stone
  #10 (permalink)  
Antiguo 19/04/2004, 11:51
Avatar de Solid  
Fecha de Ingreso: enero-2003
Ubicación: Argentina
Mensajes: 180
Antigüedad: 21 años, 9 meses
Puntos: 0


x = origen
y = destino
z = punto medio (lindo nombre no?)

lo primero que tendrías que checkear (siempre) es si X e Y comparten alguna coordenada, es decir si están sobre una misma vertical o una misma horizontal.
Si se diera alguno de esos casos, la cosa es muy distinta, porque la distancia entre el punto X e Y sería simplemente igual a la diferencia entre las coordenadas no iguales.
Ejemplo:

par ordenado (x,y)

Punto X (10,20) Punto Y (10,50).

La coordenada x para el punto X y para el punto Y es la misma (10) por lo que el origen y el destino se encuentran en una misma vertical. De esta manera puedo decir que la distancia recorrida es igual a 30.
El calculo salio de hacer 50 - 20 (y Destino - y Origen). Porque le resté la coordenada y del punto de origen a la coordenada y al punto de destino? Sencillo, porque y Destino es mayor que Y origen. Si fuera al reves digamos y Origen = 50, y Destino = 20, entonces a la y Origen le hubiera restado la y Destino...

Se entendió..?

Ahora pasemos a lo que realmente importa (porque lo de recién, movimientos no oblicuos, se caía bastante de maduro).

A partir de este momento es importantisimo guiarse con la imagen. Nota = los numeros entre parentesis y separados por una coma, son pares ordenados de coordenadas (x,y). Los nombres de los puntos (X, Y, Z) se corresponden con los nombres de los puntos del gráfico.

Supongamos los siguientes datos

Punto de Origen (X) = (10,30)
Punto de Destino (Y) = (30,50)

Armamos el triangulo y ponemos el angulo de 90 grados en el punto Z. Es decir, desde un punto surge la base, desde otro surge un lado (en nuestro caso desde X el lado, desde Y la base) y desde un punto al otro la hipotenusa.
La intersección del lado y la base nos da el punto Z.

Bien, te darás cuenta que lo que a nosotros nos interesa averiguar es la longitud del segmento XY (línea roja en el gráfico). Para eso necesitamos utilizar Pitagoras.
Nota: ^2 = elevado al cuadrado

Pitagoras = (base)^2 + (altura)^2 = (hipotenusa)^2

En nuestro gráfico la base es el segmento ZY y la altura el segmento ZX. La longitud de estos segmentos es facil de calcular ya que es lo mismo que haciamos para calcular una trayectoria vertical u horizontal ya que Z comparte una de sus coordenadas con X y la otra con Y.
Con las longitudes de esos segmentos podemos calcular la longitud de la hipotenusa, que sería el segmento XY, que sería la distancia recorrida por nuestro avioncito.
Luego, hacemos la regla de 3 necesaria para pasar de pixeles a la unidad que vos quieras y ya esta.
Calcular los puntos que conforman esa trayectoria es más complicado, si te interesa lo posteo luego...

Espero que te haya servido de algo
__________________
Just because I rock doesn't mean I'm stone
  #11 (permalink)  
Antiguo 19/04/2004, 12:02
Avatar de Solid  
Fecha de Ingreso: enero-2003
Ubicación: Argentina
Mensajes: 180
Antigüedad: 21 años, 9 meses
Puntos: 0
me olvide de hacer el desarrollo del ejemplo...

te quedaría así...

Z = (10,50) (comparte la coordenada x con X y la coordenada y con Y)
XZ = 20
ZY = 20

(XZ)^2 + (ZY)^2 = (XY)^2

400 + 400 = 800

sqrt(800) = XY

XY = 28,28...

La distancia recorrida por el avion desde el punto X hasta el punto Y fue de 28,28....
__________________
Just because I rock doesn't mean I'm stone
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 23:07.