freestuff.gr αρχική σελίδα
 FAQFAQ    ΑναζήτησηΑναζήτηση   Λίστα ΜελώνΛίστα Μελών   Ομάδες ΜελώνΟμάδες Μελών   <b>Εγγραφή Μέλους</b>Εγγραφή Μέλους 
 ΠροφίλΠροφίλ   Επιλογές μέλους Επιλογές   Τα bookmarks μου Τα bookmarks μου   Προσωπικά μηνύματαΠροσωπικά μηνύματα 
  διαφήμιση  

Καλώς ήρθατε στο forum μας! Για να συμμετάσχετε στις συζητήσεις θα πρέπει να είσαστε μέλος. Γίνετε μέλος τώρα!.
 

Variables / μεταβλητές


 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Silverlight & Flash » Flash γενικά
Moderators:  Super-Moderators, WebDev Moderators
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [1 Μήνυμα]       Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
ΑποστολέαςΜήνυμα
spookyb52


Μέλος από: 23 Ιαν 2002
Βοηθήματα: 26
Scripts: 5
Μηνύματα: 256+

Περιοχή: Lost in the mansion
View users profile Visit posters website
ΜήνυμαΣτις: 09 Ιουλ 2004 14:57    Θέμα: Variables / μεταβλητές Απάντηση με παράθεση  Mark this post and the followings unread

Στις μεταβλητές μπορούμε να αποθηκεύσουμε κάποια δεδομένα τα οποία μπορούμε να χρησιμοποιήσουμε στη συνέχεια μέσα στο έργο μας

Τα δεδομένα αυτά μπορέι να είναι

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 θα το συνεχίσω άλλη φορά

_________________
Life is like a fast car on an icy road. Brakes don't work, yes I know it, but I step on the gas
Garage punk | Rockabilly | Rock 'n' Roll | Stoner
Εμφάνιση Μηνυμάτων:   
Εισαγωγή νέου Θέματος   Απάντηση στο Θέμα Σελίδα 1 από 1 [1 Μήνυμα] Mark the topic unread :: Προηγούμενο θέμα :: Επόμενο θέμα
 Forum index » Δημιουργία Web Sites, Γραφικών & Προγραμματισμός » Silverlight & Flash » Flash γενικά
Τώρα είναι 25 Οκτ 2014 17:17 | All times are UTC + 2


Email This Page to Someone! add to Favorites

     Powered by p h p B B © 2001,2005 p h p B B Group
Για άμεση επικοινωνία με τον διαχειριστή του freestuff.gr στο email: freestuff.gr(παπάκι)gmail.com


Copyright © 1999-2013 Freestuff.gr All Rights Reserved  
Version Aegean, designed by N. Tsaganos