Make your own free website on Tripod.com
SANTIAGO BEDOYA
 
getNetText ( )
Uno de los modos de publicación mas usados en Director hoy dia, es la publicación en formato Shockwave, y la inclusión de peliculas interactivas, como juegos, etc... en paginas web accesibles a traves de internet.
En este contexto, que cada vez cobra mas fuerza, aparecen nuevas necesidades de comunicación para nuestras peliculas. ¿Como hacer juegos multijugador en red? ¿Como enviar o recibir variables de un CGI?.
 

Mas adelante aprenderemos un poco sobre como hacer juegos con chats IRC, etc, utilizando el Shockwave Multiuser Server de Director. En el capitulo anterior vimos como escribir algo parecido a "cookies" con Shockwave. Ahora vamos a centrarnos en aprender como trabajar con CGI y ASP del lado del servidor, para enviarle datos o recibir sus respuestas.

getNetText para enviar variables al CGI:

Veamos este script:

set url = "http://miservidor.com/puntos.asp?juego="3enraya"&puntos;=" & puntos & "&user;=" & jugador

getNetText( url )

En este scrip, en primer lugar creamos una variable que contenga una cadena en el formato correcto para ser enviada a una pagina ASP.

Lo hacemos con "set url = ...". El resultado real de la cadena de arriba seria finalmente:

"http://miservidor.com/puntos.asp?juego="3enraya"&puntos=3&user;=pepe "

Una vez tenemos ya la cadena a enviar al CGI, nuestro siguiente script se encargará simplemente de enviarla con el comando de Lingo: "getNetText".

Lo hacemos con:

getNetText( url )

Siendo "url" la variable de texto que habiamos construido antes.

Bueno, hasta aqui todo bien ¿no?, hemos creado una cadena para enviar con texto y variables y la hemos enviado a la pagina ASp o al CGI del servidor.
En este script no esperamos ninguna respuesta del servidor, simplemente enviamos los datos y seguimos a lo nuestro.
Pero, ¿y si queremos cargar los datos que nos pueda devolver un CGI, como un registro de  una base de datos, unas variables de sesión, etc ?
getNetText para recibir variables del CGI:

set netID = getNetText ("http://miservidor.com/database.asp")

Este script, llama a una pagina ASP, y esta responde como si hubiera recibido cualquier otro "Request.Form", de un formulario de una pagina.

Se supone que esta pagina ASP ya existe y responde adecuadamente con un valor, cuando se la llama.
Pero ¿Como atrapamos nosotros su respuesta?.

Si os fijais vereis que he asignado un identificador a la operación getNetText, con "set netID =".

Asi, Director recuerda que la operación de red en curso se llama "netID". (Tambien puede llamarse de otra forma, como vosotros querais, yo he sido hortodoxo). Esto vamos a utilizarlo para recuperar la informacion cuando esta venga de vuelta. Para esto en el siguiente cuadro de pelicula preparamos un script de forma que la pelicula no avanze mientras los datos del ASP no lleguen de vuelta.

Para esto utilizamos el comando de Lingo netDone(netID), para comprobar que netID haya finalizado. Si esta operación ha finalizado (cuando netDone sea igual a TRUE ), ponemos el resultado de la operación contenida en el campo de texto llamado "datos".

El resultado de la operación de red, lo recuperamos siempre con el script: netTextResult(netID).

Ahi teneis el script completo:

on exitFrame

go to the frame
global netID
if netDone(netID) then
member("datos").text = netTextResult(netID)
go next
end if

Como veis, primero se comprueba netDone( ) , y si esta es TRUE, o sea si ha terminado la operación, se recoge el resultado con netTextResult( ), y se pone en el campo de texto llamado "datos" para que podamos verlo.

Recordad que no debeis poner en el mismo cuadro la petición y la espera de respuesta, ya que de haber un bucle en ese cuadro, la petición se repetiria una y otra vez sin dar tiempo a llegar la respuesta y de seguir la pelicula avanzando no daría tiempo a recibir la respuesta.

Para estos propositos es costumbre realizar la llamada en un cuadro, y en el siguiente cuadro esperar a que la variable global netID se complete, para recuperar los datos y continuar si se quiere.