Validar contraseña... O algo parecido

Trajinando en busca de activar mi balde de la paintbox me encontré en la library palette con una opción de contraseña (password Entry)... Y si es lo que creo que es me estaría dando la posibilidad de llevar a cabo una parte esencial de mi cd. La idea es que el niño al finalizar con éxito cada actividad de letras tuviera acceso a una palabra secreta que fuera la clave para entrar a otra escena que le entrega otro mensaje que debe llevar a cabo...(me enrede mucho), bueno... Eso... Yo creo que puedo hacerlo con la opción password Entry...¿o nada que ver?
Cariños,
Carol

1 Respuesta

Respuesta
El uso de Password Entry para tu propósito puede funcionar pero no es exactamente para lo que está pensado. Me explico: si lo que quieres es tener un campo de texto en el que escribir una contraseña y si es correcta pasar a la siguiente prueba, te puede valer. Pero si lo que quieres es tener varias contraseñas válidas y cualquiera de ellas tiene que ir a la prueba que le corresponda, el asunto se complica.
Passqord Entry está pensado para que exista sólo una contraseña válida. Pero le puedes engañar ;-)
La idea, si no he entendido mal, es ir resolviendo pruebas y tras cada prueba mostrar una palabra que da acceso a la siguiente. En algún sitio tendrás una opción para elegir prueba donde pedirás esa palabra. Si es correcta le das acceso y sino nada.
Tienes que crear un campo de texto y asignarle el comportamiento Password Entry. Se abre un cuadro de diálogo que te pregunta la contraseña, ahí escribe lo que quieras, no importa porque para tu aplicación no va a servir. La opción "Test password after each key" tiene que estar desactivada. En los dos siguientes campos tienes que poner el nombre de una función, que por ejemplo voy a llamar "compruebaClave". Tendrías que poner lo siguiente:
CompruebaClave( pPassword )
Ahora creas un script de película (te sitúas en un miembro del cast que esté libre y pulsas Mayus+Ctrl+U), ahí tienes que crear la función "compruebaClave", que lo único que hace es comprobar si el texto introducido pertenece a una clave o no. Sería algo parecido a lo siguiente:
On compruebaClave pPassword
case (pPassword) of
"Clave1": go to frame "fClave1"
"Clave2": go to frame "fClave2"
otherwise go to frame "fClaveIncorrecta"
end case
end
Donde "ClaveX" serían las claves válidas, y "fClaveX" el frame al que tiene que saltar la película si se introduce la clave correcta.
Esto lo que hace es comprobar si la clave introducida es "Clave1", en ese caso salta al frame "fClave1". Tienes que crear el marcador con ese nombre de frame. Los creas pinchando en la línea que está encima del canal de script y que no está dividida en frames.
Ahora solo tienes que crear los marcadores correspondientes, e ir insertando tanto código como sea necesario, una línea por cada clave. En el ejemplo solo te he puesto dos líneas correspondientes a dos claves. También tienes que crear un marcador que sea "fClaveIncorrecta" donde saltará el script si la clave introducida no es ninguna de las anteriores.
Espero que hayas entendido la idea. Pruébalo, y si algo no te sale me lo comentas.
Te entendí perfectamente todo, seguí los pasos:
on compruebaClave pPassword
case (pPassword) of
"perro": go to frame "Clave1"
"lucas": go to frame "Clave2"
otherwise go to frame "ClaveIncorrecta"
end case
end
¿Pero cuándo introduzco cualquiera de las dos claves (perro o lucas) me salta al frame de clave incorrecta?
También en el script me aparece en negro (según yo entiendo estaría mal escrito:lo que a continuación te pongo entre paréntesis para diferenciar de lo que esta en verde, osea correcto)
on (compruebaClave pPassword)
case ((pPassword)) of
El resto todo en el color correcto (verde, azul y gris).
A mi parecer estoy haciendo bien casi la mayoría de lo que me enseñaste... pero algo me falta.
Tienes razón, me había confundido al usar pPassword. PPassword es una variable interna del comportamiento Password Entry que no está definida como global y por tanto no se puede usar en compruebaClave. Yo durante las pruebas que hice la debí poner como global y eso me confundió.
Como no me parece una buena idea tocar ese código, te voy a proponer otra cosa: crear tu misma algo parecido a ese comportamiento. En realidad tu no, ya te lo paso yo.
Tienes que crear un campo de texto y colocarlo en el escritorio, luego pulsas con botón derecho encima y marcas la opción Script. En la ventana que se te abre borras todo lo que ponga y copias lo siguiente:
Global OcultarTexto
Global clave
On beginSprite me
OcultarTexto = 1 -- 0=no, 1=si
clave = ""
sprite(me.spriteNum).member.text = ""
end
on keyDown me
campoTexto = sprite(me.spriteNum).member
vKey = the key
if (vKey = ENTER) or (vKey = RETURN) then
compruebaClave( clave )
else
clave = clave & vKey
if OcultarTexto = 0 then
pass
else
campoTexto.text = campoTexto.text & "*"
end if
end if
end
on compruebaClave texto
alert texto
case (texto) of
"perro": go to frame "fClave1"
"lucas": go to frame "fClave2"
otherwise go to frame "fClaveIncorrecta"
end case
end
Este script lo que hace es leer lo que vas escribiendo y cuando pulsas ENTER comprueba si pertenece a una clave y en ese caso salta al marcador correspondiente. Si te fijas, la variable OcultarTexto la pongo con valor 1 al comienzo. Esto hace que no se vea lo que se va escribiendo. Si quieres que se vea sólo tienes que cambiar ese 1 por un 0.
Perdona mi despiste, y si no se adapta a tu propósito, no dudes en decírmelo para continuar con ello hasta que quede como debe ser :D
¿Te ha servido la respuesta? Si no es lo que necesitas pídeme una aclaración. En caso contrario te agradezco que puntúes la pregunta. Para cualquier otra consulta estaré aquí dispuesto a ayudarte en lo que me sea posible.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas