-
Multiple Passwords, Multiple Destinations
Hello!
I'm doing an assignment for school and I basically have 0 knowledge of actionscript. I just copy/paste because I've never had the time to learn it.
So basically what I need to do is create a field (password) that based on the password / value the user enter, they go to a certain frame.
I want to have about 30 passwords, and 30 seperate frames for each one to go to.
Can somebody help me out here?
Thanks!
p.s.
Password: john -> gotoandstop (5)
Password: bill -> gotoandstop (6)
etc
Thanks x2!
-
Easy enough.
You're going to want to have an array to store all the values. I'm assuming you have all the usernames/passwords already set. This is what you're going to do.
Click on the first frame of the timeline. We're going to setup the stage. Drag a text box onto the stage, and open the properties panel (Ctrl F3?). Set it's type to an input box, and give it an instance name of inputUser.
Do the same, drag another text box onto the stage, make it an input textbox and give it the instance name of inputPass. These are the two boxes we'll be using to setup the login.
Now, drag a box onto the stage. Select the box and convert it into a symbol (F8), a button type. Give this an instance name of loginButton
The stage is setup, let's code!
Click on the first frame again and open the actions panel (F9) and put in the following code:
PHP Code:
stop();
userNames = new Array ("Matt","John","Cathy") // Continue to whatever number you want passWords = new Array ("123", "doggie", "flashkit")
loginButton.onRelease = function(){ getUser = _root.inputUser.text; getPass = _root.inputPass.text;
for (i=0;i<userNames.length;i++){ if (getUser == userNames[i] and getPass == passWords[i]){ _root.gotoAndStop (i + 2); } } }
That is all there is to it. The only thing to note is the gotoAndStop (i + 2). The way this is set up is that each frame that you want the login to go to (you mentioned it was a unique frame for each login), will go to the usernames slot number of the array. The +2 is because the timeline starts on frame 1, and arrays start at 0.
So for example, if I typed Matt and 123: since that login in the array is the first one, it's at 0. So, 0+2 = frame 2, which is the next one after the login screen. And so on and so forth.
That's all there is to it!
-
Hey!
Thanks so much, you're my idol.
I havent tried this yet, but I'm sure it will work.
I've been trying to learn AS all day and I've actually made a lot of progress.
This doesn't look as foreign to me as when It would have when I first posted.
Thanks bro, i'll let you know how i make out!
Cheers.
-
Sorry for the double post, but can I get you to explain some of the elements of that?
ie.
" getUser = _root.inputUser.text;
getPass = _root.inputPass.text;"
what is the purpose of that?
and
for (i=0;i<userNames.length;i++){
if (getUser == userNames[i] and getPass == passWords[i]){
_root.gotoAndStop (i + 2);
}
}
can you explain what each thing is doing here?
-
Triple Post!
Didn't work bro.
And I'm not retarded, I did it all correctly
..i click on my loginButton and she doesnt even change frames.
any ideas?
-
QUAD POST!
got it working!
thanks man, but can u still explain stuff like:
getUser = _root.inputUser.text;
getPass = _root.inputPass.text;
and
if (getUser == userNames[i] and getPass == passWords[i]){
and
for (i=0;i<userNames.length;i++){
and
what _root means?
THANK YOU!!!!!!!!!
-
Glad you got it working.
PHP Code:
getUser = _root.inputUser.text; getPass = _root.inputPass.text;
Technically we don't need this, but I believe it's good practice to store information coming from a textbox into variables. Easier to manipulate and makes the syntax a little shorter. All this is doing is simply taking what the user types as their username and stores it in getUser, and also stores the password they type into getPass
The FOR loop statement simply loops through the code between it to the number of usernames you have. So if you have 30 usernames stored in the array userName (where you typed them out), then it will loop through the code 30 times.
What happens in between this loop?
PHP Code:
if (getUser == userNames[i] and getPass == passWords[i]){
This is what is looped 30 times. It's basically an IF statement, which is a simple check to see if any type of condition is met. In our case, we're checking two things.
First we're seeing if getUser (that is the variable storing the username they typed) matches any of the names in the array userName. We are also checking if the password they typed and is stored in getPass matches the corresponding password in our passWords array.
If those two conditions are met, then you run the gotoAndStop(); code.
For someone who has never looked at AS, it might be a bit much to grasp ... but seeing as it's for a project, you're probably just focused on finishing it rather than learning it. But maybe it'll interest you in the future.
Good luck!
-
Thanks man! I have 2 more questions then you'll never see me again!
1. I'm trying to make this happen on the stage of frame 24.
Do I change " i=0 " to " i=23 "
I've tried a few things, and when I input my information, the movie control does not switch frames. Any ideas?
2. Also what is the [i] for?
You've been great, sorry for all of this.
Cheers
-
Sorry I'm confused. Are you saying you want the successful logins to start from frame 24 and ending on frame 64 (30 pages/users)?
If that's the case, change and replace with: _root.gotoAndStop (i + 24);.
So for what [i] is ... basically, an array is a variable that stores multiple values, hence why we used it to store the userNames and another array to store the passWords. Since an array can store multiple values, we have to be able to retrieve any of these values at any given point.
Each of the slots in an array are called the elements. So you had an array with 30 elements (as we do for the userNames), you can find out which element is storing what username by tracing: userNames[i].
[i] represents any number ... so for example, userNames[2] might return the name "Cathy". Note that the first element in an array is element [0], so an array with 30 names contains elements 0-29.
The reason why we use i, is because in the for loop, the i variable represents the number that is being looped 0 - 29 (or the length of the userName array). That way, it'll check every element in the array to see if there's a match.
So that's why the IF statement says: if (getUser == userName [ i] ..., because it is essentially saying:
- if (getUser == userName[0] and getPass == passWords[0])
- if (getUser == userName[1] and getPass == passWords[1])
- if (getUser == userName[2] and getPass == passWords[2])
- if (getUser == userName[3] and getPass == passWords[3])
- all the way through all the names
If it DOES find a match, it tells the timeline to jump to a frame that is (now) starting at frame 24 plus whatever number [i] was. So, if the match was found on element 5 of the arrays, then it'll jump to frame 29 (24+5).
Again, this is more advanced concepts that might take a little bit to grasp for a new comer. Good luck.
-
Designer, Programmer, Musician
_root is the most first/main timeline. If you are inside a MovieClip or a Button, that's a new timeline in there, and if you have some code inside it you must call the code with the instance name of the button or the movieclip: E.G. I have a button with instances name Btn1, and a movieclip with instances name BtnHolder, so if i want to click that button from outside, i have to write on the "root" timeline
Actionscript Code:
BtnHolder.Btn1.onPress = function(){
But if the button is out of the movieclip, on the main timeline, and the code is inside a movieclip, or on the timeline of a movieclip, we use:
Actionscript Code:
_root.Btn1.onPress = function();
_root = main timeline
And you can use the _root for any function, variable, action. Hope this helps.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|