Στις μεταβλητές μπορούμε να αποθηκεύσουμε κάποια δεδομένα τα οποία μπορούμε να χρησιμοποιήσουμε στη συνέχεια μέσα στο έργο μας
Τα δεδομένα αυτά μπορέι να είναι
1) Strings πχ : myVariable = "keimeno"
2) Boolean values πχ : myVariable = true ή myVariable = false
3) Αριθμοί πχ : myVariable = 22
Μια μεταβλητή μπορεί να έχει οποιαδήποτε ονομασία, δέν μπορεί όμως να περιλαμβάνει κενά σημεία στίξης και χαρακτήρες όπως @!$% κτλ
Επιπλέον καλό θα είναι οι μεταβλητές να μήν έχουν ένα γενικό όνομα όπως myvar αλλά κάτι που θα θυμίζει τα δεδομένα τα οποία κρατάνε
πχ σε ένα παιχνίδι με αυτοκίνητα για να μήν μπερδευόμασταν θα γράφαμε
| κώδικας: |
maxSpeed = 11
acceleration = 1.2
brake = .98 |
Δύο μεταβλητές θα μπορούσαμε να τις προσθέσουμε άν είναι αριθμοί
πχ το παρακάτω θα έδινε 23
| κώδικας: |
varOne = 12;
varTwo = 11;
trace(varOne+varTwo) |
//-------------------------------------
| κώδικας: |
varOne = metablhth;
varTwo = 11;
trace(varOne+varTwo); |
Άν όμως κάποια από τις μεταβλητές δέν ήταν αριθμός αλλά undefined μεταβλητή όπως πιό πάνω τοτε αυτό θα επέστρεφε αποτέλεσμα NaN (not a number)
Τι θα γινόταν όμως άν η μιά μεταβλητή ήταν αριθμός και η άλλη κείμενο?
Το παρακάτω επιστρέφει spookyb52
| κώδικας: |
varOne = "spookyb"
varTwo = 52;
trace(varOne+varTwo); |
Αυτό γίνεται γιατί το flash τις ενώνει όπως θα ένωνε ένα κείμενο
Το πρόβλημα μπορεί να υπάρξει οπως θα δούμε πιό κάτω σε φόρτωμα μεταβλητών από εξωτερικό αρχείο όπου ένας αριθμός μπορεί να αναγνωσθεί ως κείμενο με αποτέλεσμα το 11+23 αντί για 34 να δώσει 1123
Εδώ να πούμε ότι το flash δίνει στο false την τιμή 0 και στη true την τιμή 0
Έτσι το παρακάτω
| κώδικας: |
if (clip.hitTest("_root.myclip")==true) {
trace("good")
} |
θα μπορούσε να γραφτεί και ώς
| παράθεση: |
if (clip.hitTest("_root.myclip")==1) {
trace("good")
} |
όπου true βάλαμε 1
| παράθεση: |
:arrow:Άσχετο με μεταβλητές
Το παραπάνω θα μπορούσε να γραφτεί και ώς
| κώδικας: | if (clip.hitTest("_root.myclip")) {
trace("good");
} |
άν θέλαμε να πούμε ότι η συνθήκη είναι true
και ώς
| κώδικας: | if (!clip.hitTest("_root.myclip")) {
trace("good");
} |
άν θέλαμε να πούμε ότι η συνθήκη είναι false |
Στο mx2004 [flash 7] το παρακάτω
mygod
trace(mygod)
θα επέστρεφε undefined γιατί η μεταβλητή mygod δέν έχει κάποια τίμή. Στο flash 6 όμως θα επέστρεφε 0
έτσι και το παρακάτω
| κώδικας: |
mygod;
mygod += 5;
trace(mygod); |
επιστρέφει στο mx2004 NaN και στο mx2003 5, οπότε χρειάζεται λίγη προσοχή σε αυτό και γενικά αφού το flash έχει αλλάξει συνήθειες θα πρέπει να προσαρμοστούμε και εμείς και να δηλώνουμε πάντα κάποια τιμή για τις μεταβλητές μας
Αντί για myVar τώρα θα γράφετε myVar = 0 πχ
//------------------
Αντί να γράφουμε τη μια μεταβλητή κάτω από την άλλη μπορούμε να τις γράφουμε και στην ίδια σειρά άν θέλουμε
πχ αντί για
| παράθεση: |
a = 0;
b = 1;
c = 2;
d = 3;
e = 4; |
μπορούμε να γράψουμε
| παράθεση: |
| a=0, b=1, c=2, d=3, e=4; |
αφού τις χωρίσουμε με κόμμα
ακόμα άν πολλές μεταβλητές χρειάζονται την ίδια τιμή μπορούμε να τις γράψουμε πάλι σε μιά ευθεία
Αντί για
| παράθεση: |
me = 0;
you = 0;
he = 0;
she = 0;
it = 0;
they = 0; |
μπορούμε να έχουμε
| παράθεση: |
| me=you=he=she=it=they=0; |
Ακόμα οι μεταβλητές μπορεί να περιέχουν τιμές αντικειμένων στο flash μας
πχ
| κώδικας: |
xmousepos = _root._xmouse;
trace(xmousepos); |
το παραπάνω επιστρέφει την θέση του ποντικιού στον άξονα των x
| κώδικας: |
stageAlpha = _root._alpha;
trace(stageAlpha);
|
η την τιμή του alpha στην σκηνή κτλ
//----------------------------------
Οι μεταβλητές γενικά υπάρχουν μέσα στο timeline στο οποίο χρησιμοποιούνται. Άν θέλήσουμε να τις προσπελάσουμε θα πρέπει να δώσουμε την διαδρομή τους
η διαδρομή της μεταβλητής myVar που βρίσκεται στο main timeline είναι _root.myVar
η διαδρομή της μεταβλητής myVar που βρίσκεται στο movieclip spooky είναι _root.spooky.myVar
η διαδρομή της μεταβλητής myVar που βρίσκεται στο movieclip b52 που βρίσκεται με τη σειρά του στο movie clip spooky είναι _root.spooky.b52.myVar
//-----------------------------------
Μπορούμε να θέσουμε όμως μια global μεταβλητή που θα είναι προσπελάσιμη από κάθε timeline με τό όνομά της
Αυτό γίνεται βάζοντας το _global πρίν κάθε μεταβλητή
πχ στο main timeline γράφουμε
| παράθεση: |
| _global.stageAlpha = 111 |
Άν στη συνέχεια μέσα σε ένα clip γράψουμε το παρακάτω
| παράθεση: |
trace(stageAlpha);
|
θα επιστρέψει 111 ανεξάρτητα από το γεγονός ότι δέν δηλώσαμε την διαδρομή της μεταβλητής
//------------------------------------
Δέν μπορούμε να έχουμε δύο μεταβλητές με το ίδιο όνομα στο ίδιο timeline
πχ το παρακάτω
| κώδικας: |
variable = 1;
variable = 2;
trace(variable); |
θα επέστρεφε 2 γιατί είναι η τελευταία δήλωση της τιμής της μεταβλητής
Μπορούμε όμως να έχουμε σε διαφορετικά timelines κοινές ονομασίες μεταβλητών
//-------------------------------------------
Mόνη εξαίρεση στον κανόνα ότι δύο μεταβλητές στο ίδιο timeline δέν μπορούν να έχουν ίδια ονομασία αποτελούν οι τοπικές μεταβλητές
Μπορούμε να δηλώσουμε μια μεταβλητή ώς τοπική με την παρακάτω σύνταξη
| κώδικας: |
| var myVariableName = 1982 |
Η τοπική μεταβλητή έχει έννοια μόνο για την συνάρτηση για την οποία δημιουργείτε και διαγράφετε μετά την εκτέλεση της συνάρτησης
πχ
| κώδικας: |
myVariableName = "spooky";
function myFunction() {
var myVariableName = 1982;
trace(myVariableName);
}
myFunction();
trace(myVariableName); |
το παραπάνω θα επέστρεφε 1982 και spooky έχουμε δύο μεταβλητές με την ίδια ονομασία αλλά η μία έιναι τοπική και έτσι δέν υπάρχει κάποια διένεξη με αποτέλεσμα να αναγνωρίζονται και οι δύο
και για να γίνει περισσότερο κατανοητό
| κώδικας: |
function myFunction() {
var myVariableName = 1982;
varMe = 2004;
}
myFunction();
trace(myVariableName);
trace(varMe) |
το παραπάνω επιστρέφει undefined για την τοπική μεταβλητή myVariableName και 2004 για την μεταβλητή varMe που δέν είναι τοπική
//------------------------------
Άς πάμε και σε κάτι άλλο τώρα. Τα περισσότερα στοιχεία σε ένα flash μπορούν να αντιμετωπιστούν σαν αντικείμενα
η σύνταξη για τη δημιουργία σε ένα αντικείμενο είναι
panatha = new Object(); η εναλλακτικά panatha = {}
Σε ένα αντικείμενο μπορούμε να προσδώσουμε ιδιότητες
πχ
| κώδικας: |
panatha = {name:"spooky", birth:1982};
trace(panatha.name) |
θα επέστρεφε spooky
Αυτό μπορούμε να το κάνουμε και σε ένα clip
πχ στο movie symbol myclip
| κώδικας: |
myclip.name = "light_filter_girl_dd";
trace(myclip.name); |
το παραπάνω θα επέστρεφε
light_filter_girl_dd
Αυτό όμως δέν μπορούμε να το κάνουμε με τις μεταβλητές, τουλάχιστον όχι με τον ίδιο τρόπο
το παρακάτω θα επέστρεφε undefined
| παράθεση: |
myVar.name = "light_filter_girl_dd";
trace(myVar.name); |
Πώς μπορούμε λοιπόν να δημιουργήσουμε ιδιότητες για μιά μεταβλητή?
με τον παρακάτω τρόπο, δηλώνοντας τον τύπο της μεταβλητής
πχ
| κώδικας: |
myVar = new String();
myVar.name = "spooky";
trace(myVar.name); |
θα επέστρεφε spooky
η το επόμενο
| κώδικας: |
myVar = new Number();
myVar.age = 22;
trace(myVar.age); |
θα επέστρεφε 22
το Loading θα το συνεχίσω άλλη φορά