[AS3.0] Δουλεύοντας με classes (Β)

Λύσεις προβλημάτων για το δημοφιλές πρόγραμμα κατασκευής παρουσιάσεων στο διαδίκτυο.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Maradonna
Δημοσιεύσεις: 135
Εγγραφή: 07 Ιουν 2007 03:19
Τοποθεσία: Αθήνα
Επικοινωνία:

[AS3.0] Δουλεύοντας με classes (Β)

Δημοσίευση από Maradonna » 10 Φεβ 2010 20:35

Προσβασιμότητα μεταβλητών και συναρτήσεων εντός μίας κλάσης

Είναι σημαντικό να μπορούμε να ορίζουμε απο "ποιον" και αν,θα έχουν πρόσβαση οι μεταβλητές μας καθώς και οι συναρτήσεις μας που κατασκευάζουμε μέσα σε μία κλάση.
Οι τύποι προσβασιμότητας,είναι τέσσερις και ακολουθεί συνοπτική ανάλυση του καθενός.
-Public: Είναι προσβάσιμη όταν καλείται απο το εσωτερικό της κλάσης καθώς επίσης και απο εξωτερική αναφορά σε αυτή και στα instance αυτής (πχ μέσω του UID).
-Private: Είναι προσβάσιμη μόνο απο το εσωτερικό της κλάσσης (πρακτικά δλδ. μόνο απο το αρχείο .as που ορίζεται).
-Internal: Είναι προσβάσιμη σε επίπεδο πακέτου (package) - (Η ιεραρχία είναι η κλάση να περιέχεται στο πακέτο,πρακτικά σημαίνει οτι είναι προσβάσιμη ένα επίπεδο πιο πάνω απο την ίδια τη κλάση).
-Protected: Είναι προσβάσιμη μόνο απο τη κλάση αλλα και απο οποιαδήποτε υποκλάση που περιέχει την κλάση στην οποία την έχουμε ορίσει εντός της.
(Για όποιον ίσως έχασε τον ειρμό,αυτη που αναφέρεται ως "προσβάσιμη" είναι μία πιθανή μεταβλητή ή συνάρτηση που ορίζεται με έναν απο τους 4 παραπάνω τύπους μέσα σε μία κλάση.)

Επεκτείνοντας τη κλάση

Στις πιο σύνηθες περιπτώσεις,η κλάση μας θα θέλουμε να επεκτείνει τη δυνατότητα της ως προς δύο βασικά λειτουργικά μέρη του flash.Είναι είτε ως προς MovieClip,είτε ως προς Sprite.
Εάν θέλουμε να χρησιμοποιήσουμε ιδιότητες της υπερ-κλάσης MovieClip επεκτείνουμε κατα MovieClip.Εάν όμως θέλουμε να χρησιμοποιησουμε ιδιότητες της timeline του flash σε συνδιασμό με το movieClip,επεκτείνουμε σε Sprite.
Πρέπει να τονιστεί ωστόσο,οτι ανάλογα με τις απαιτήσεις κάθε περίπτωσης,τα δεδομένα ως προς το σε ποια κατεύθυνση επεκτείνουμε τη κλάση αλλάζει.Υπάρχουν και άλλοι παράμετροι που μπορεί να μας οδηγήσουν στη χρήση ή μή μίας επέκτασης σε αντιδιαστολή με κάποια άλλη.
Μία καλή ανάλυση απο ανθρώπους που θέτουν όλα αυτά τα ζητήματα μπορείτε να βρείτε εδω.
Για δικές μας κλάσεις,που είναι υποσύνολα-υποκλάσεις μίας κεντρικότερης κλάσης που έχουμε διμηουργήσει,ισχύει ο κανόνας

Κώδικας: Επιλογή όλων

public class Subclass extends Superclass
Κατασκευάζοντας νέο αντικείμενο με προσβάσιμες παραμέτρους σε μία κλάση

Ως παράδειγμα,θα κατασκευάσουμε μία κλάση στην οποία εντός της θα ορίσουμε τις ιδιότητες καθώς και παραμέτρους που μπορούμε αργότερα να επικαλεστούμε απο το flash για ένα αντικείμενο. (epestrepseThesi.as)

Κώδικας: Επιλογή όλων

package {
  
  public class epestrepseThesi {
    
    public function epestrepseThesi(x:Number):Number {
      var introduce:String = "Η θέση σας ως προς άξονα x είναι: ";
      var echoPos:String = introduce + x + "px";
      
      return echoPos;
    }
  }
}
Πηγαίνοντας στο flash file,δηλώνουμε τη κλάση και αλληλεπιδρούμε με αυτή επιστρέφοντας τη θέση μας ως προς x μέσω αυτής.Αντί του document class,προσθέτω τη κλάση μου που βρίσκεται στο ίδιο φάκελο με το .fla με τη δήλωση import

Κώδικας: Επιλογή όλων

import epestrepseThesi;
var pesThesi:epestrepseThesi = new epestrepseThesi( );
var myCurrentXpos:Number = 120;
trace(pesThesi.epestrepseThesi( myCurrentXpos ));
Το οποίο θα δώσει..
//Η θέση σας ως προς άξονα x είναι: 120px
Τί και πότε κάνουμε import εντός μίας κλάσης

Για όποιον έχει δουλέψει με το flash timeline scripting γνωρίζει οτι για να έχουμε πρόσβαση στις ιδιότητες μίας συγκεκριμένης μεθόδου,θα πρέπει να κάνουμε import την ειδική προκαθορισμένη διεύθυνση της κλάσης που τη περιέχει.
Για παράδειγμα,εάν θέλω να να ορίσω μία μεταβλητή με τύπο Tween θα πρέπει να κάνω import τη κλάση fl.transitions.Tween.
Ο καλύτερος τρόπος για να ξέρω πότε πρέπει να προσθέσω και ποιό import,ανατρέχω στην αντίστοιχη μέθοδο που θέλω να έχω πρόσβαση μέσω του flash help documentation.
Εκεί μπορούμε να έχουμε αναλυτικές πληροφορίες οχι μονο για το import statement που πρέπει να δηλώσουμε,αλλα και για το επίπεδο στο οποίο ανάγεται (top level,κλπ) τη σημαντικότητα και την συμβατότητα με άλλες μεθόδους.
Εικόνα
Code is poetry

Απάντηση

Επιστροφή στο “Flash γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες