Conociendo ya lo básico de los ShO podemos elaborar una pequeña presentación donde un usuario pueda poner su nombre y su pais. Al pasar esta ventana-formulario el usuario vera un mensaje de bienvenida con la bandera de su país. Al mismo tiempo hay un mostrador de fotos, el detalle está en que si el usuario cierra la ventana en la foto numero 2, al volver a ingresar irá de frente a esa última foto que revisó. Incluso añadiremos la posibilidad de que el usuario resetee su ShO, dejandola vacía.
Para este ejemplo he usado el componente RADIO BUTON del MX2004, asi que están compilados con AS2. Solo visibles en el Flash MX 2004.
Para comenzar creo 3 keyframes, el primero con una etiqueta llamada "refresh", el segundo "entrada" y el tercero "interface".
Creamos ahora nuestra ventana para que el usuario pueda introducir la información. Básicamente es un movie clip que contiene un campo de texto (para el nombre), 3 componentes de botones de radio (para los países) y un botón de guardar.
Dentro del movie clip irán las acciones:
//listener para trabajar con los componentes. Usamos la funcion básica del ejemplo de macromedia
miRBListener = new Object();
miRBListener.click = function(evt){
// la variable
pais guarda la data que da el componente.
_root.pais=evt.target.selection.data
}
//se suma el listener al componente
pais.addEventListener("click", miRBListener);
//Aqui se atacha la funcion "guardar" al evento RELEASE del boton.
btn_guardar.onRelease = guardar;
//definimos la funciòn guardar, mejor dicho lo que queremos que suceda cuando se haga click en el boton.
function guardar() {
se guarda en una variable "nombre" en el ShO (mi_so) lo contenido en el campo de texto "nombre1"
_root.mi_so.data.nombre = nombre1.text;
//lo mismo en una variable "pais" lo contenido en la variable del timeline "pais" (que es lo que aloja lo que se elijio en el componente)
_root.mi_so.data.pais=_root.pais
//por si las dudas guardamos todo.
_root.mi_so.flush();
trace(nombre1.text);
trace("boton clickeado");
trace(_root.mi_so.data.pais)
//hacemos el refresh.
_root.gotoAndPlay(1);
}
La data de los componentes se llenan de esta manera: la data indicara el país del id linkage del clip de la bandera en la librería
Listo, con esto ya tenemos nuestra ventana para recojer los datos. Ojo que estamos en el frame "entrada", ahora en este frame (pero en el timeline) ponemos el siguiente script:
//creamos el ShO
mi_so = SharedObject.getLocal("usuario02");
//verificamos si es que el nombre está definido y el país también
if (mi_so.data.nombre == undefined ||mi_so.data.pais==undefined) {
//si no lo están, o si solo está uno de ellos se hace STOP a la película
stop();
//trace("data no definida");
} else {
//sino, osea, si los 2 datos están definidos, nos vamos al frame "interface"
//trace(mi_so.data.nombre);
gotoAndStop("interface");
}
Ahora nos ubicamos en el frame "interface", en este frame vamos a poner el script para:
-Ubicar los elementos y datos en la interface
-Crear la funciòn de deslogeo (vaciado del ShO)
Primero atachamos la funcion de deslogeo al botón:
btn_deslogeo.onRelease = deslog;
Ahora creamos la función:
function deslog() {
//removemos el clip de la bandera del país que hemos colocado
removeMovieClip(bpais)
//usamos un bucle para recorrer toda la data del ShO y borrarla
for (var p in mi_so.data) {
delete mi_so.data[p];
}
//al final nos vamos a la pantalla refresh
_root.gotoAndPlay("refresh")
}
Ahora ubiquemos la data en la interface:
function datos(){
//el mensaje de bienvenida se pasa al campo de texto.
mensaje1.text = "Bienvenido "+mi_so.data.nombre;
//
trace(_root.mi_so.data.pais)
//se envia al usuario a la foto que ha visitado en su visita anterior
_root.fotos.gotoAndStop(mi_so.data.foto)
//se atacha la bandera del pais que ha escogido el usuario y lo ubicamos en unas coordenadas especificas
_root.attachMovie(mi_so.data.pais,Bpais,1,{_x: 15, _y: 108})
//paramos aqui.
stop();
}
Ahora el visor de fotos, donde queremos que el usuario visite las fotos y la última que haya visto será guardada.
El visor tiene como nombre de instancia: "fotos".
Nuevamente atachamos una función al evento del boton de AVANZAR del visor:
btn_go.onRelease=adelante
Ahora la función que guardará la ubicación:
function toma_foto(){
//guardamos el numero de frame actual en una variable en el ShO
_root.mi_so.data.foto=_currentframe
//guardamos la data
_root.mi_so.flush();
//trace("tomafoto dice: "+_currentframe)
}
La función para avanzar:
function adelante(){
play()
}
A pesar de que no era necesario usar una función para un play() es bueno tenerlo asi, ya que si después quieres hacer mas cosas con ese botón solo añades las acciones a la función y listo.
Al final, en cada frame de cada foto llamamos a la función:
stop()
toma_foto()
¡Listo!