Οι Τύποι των Scripts και η Σειρά Εκτέλεσής τους
Οι Τύποι των scripts της Lingo που μπορούμε να γράψουμε σε μια εφαρμογή του Director είναι οι εξής :
scripts ειδώλων ή συμπεριφορές
scripts μέλη του cast
scripts πλαισίου
scripts ταινίας
Όλα τα scripts καταλαμβάνουν μια θέση στο παράθυρο Cast, εκτός από τα scripts μέλη cast. Τα scripts μελών του cast δεν μπορούν να χρησιμοποιηθούν από άλλα μέλη του cast, αλλά αποθηκεύονται με το μέλος του cast στο οποίο ανήκουν.
Τα scripts ειδώλου ανατίθενται σ’ ένα είδωλο στο score. Όταν θέλουμε να ελέγξουμε τις ενέργειες ενός μέλους του cast για ένα μικρό χροDiakνικό διάστημα ή για μια συγκεκριμένη ενότητα του score, δημιουργούμε ένα script ειδώλου.
Τα scripts πλαισίου ανατίθενται σ’ ένα συγκεκριμένο πλαίσιο στο score και τα χρησιμοποιούμε συνήθως για να δημιουργήσουμε χειριστές (handlers) που να είναι διαθέσιμοι σ’ όλο το πλαίσιο ή για να ελέγχουμε την κεφαλή αναπαραγωγής χωρίς να απαιτείται είσοδος από τον χρήστη. Η πιο συνηθισμένη χρήση για ένα script πλαισίου είναι να κρατά την κεφαλή αναπαραγωγής σ’ ένα πλαίσιο μέχρι να συμβεί ένα συμβάν, όπως ένα κλικ σ’ ένα πλήκτρο εντολής.
Τα scripts μελών του cast ανατίθενται σ’ ένα μέλος του cast και είναι χρήσιμα όταν θέλουμε το μέλος του cast να εκτελεί πάντα τον ίδιο κώδικα Lingo ανεξάρτητα από το πού εμφανίζεται μέσα στο score. Η πιο συνηθισμένη χρήση τους είναι για τη δημιουργία πλήκτρων εντολής σε μενού εφαρμογών.
Τέλος, τα scripts ταινιών διατίθενται σ’ όλη την ταινία, όταν αυτή αναπαράγεται και χρησιμοποιούνται συνήθως για να ελέγξουν το τι συμβαίνει όταν η ταινία εκκινεί, σταματά ή παύει προσωρινά.
Όταν λαμβάνει χώρα ένα συμβάν (event), το Director αποκρίνεται εκδίδοντας ένα μήνυμα με το ίδιο όνομα. Το μήνυμα αυτό ταξιδεύει με τη σειρά, μέσω scripts ειδώλων, scripts μελών του cast, scripts πλαισίων και scripts ταινίας, αναζητώντας έναν χειριστή (handler) με το ίδιο όνομα.
Το μήνυμα εκτελεί τον πρώτο χειριστή που συναντά και ο οποίος ταιριάζει και μετά το μήνυμα σταματά. Αν το Director δεν μπορεί να βρει έναν χειριστή γι’ αυτό το μήνυμα, απορρίπτει το μήνυμα και δεν συμβαίνει τίποτα.
Τα Σημαντικότερα Συμβάντα του Director
Τα σημαντικότερα από τα συμβάντα του Director είναι τα εξής :
prepareMovie
startMovie
stopMovie
prepareFrame
enterFrame
exitFrame
mouseDown
rightmouseDown
mouseUp
rightmouseUp
mouseEnter
mouseWithin
mouseLeave
keyDown
keyUp
beginSprite
endSprite
idle
Διακλάδωση σε Άλλη Ταινία
Μπορούμε να πάμε σε μια άλλη ταινία του Director κατά τη διάρκεια της αναπαραγωγής μιας ταινίας και μάλιστα όχι μόνο στο πρώτο πλαίσιο της ταινίας αλλά σ’ όποιο πλαίσιο θέλουμε. Οι εντολές που μπορούμε να χρησιμοποιήσουμε είναι οι εξής:
on mouseUp go to movie "intro2.dir" end on mouseUp go to frame "nextIntro" of movie "intro2.dir" end
Η Δομή repeat while
Με τη δομή repeat while … end repeat μπορούμε να ελέγχουμε συνέχεια μια συνθήκη και όσο αυτή είναι αληθής να εκτελούμε κάποιες εντολές σ’ έναν βρόχο. Μόλις η συνθήκη γίνει ψευδής, βγαίνουμε από τον βρόχο.
on exitFrame repeat while the stilldown = TRUE nothing end repeat end
Στο παραπάνω handler, η εντολή nothing δεν κάνει απολύτως τίποτα και η χρήση της είναι καθαρά διακοσμητική ενώ η συνάρτηση stilldown ελέγχει αν είναι πατημένο το αριστερό πλήκτρο του ποντικιού.
Μετακίνηση Ειδώλων με την Lingo
Οι ιδιότητες ειδώλου locH και locV επιστρέφουν την οριζόντια και την κατακόρυφη θέση ενός ειδώλου στη σκηνή σε pixels, αντίστοιχα. Με τη βοήθειά τους μπορούμε να μάθουμε και να ορίσουμε τη θέση ενός ειδώλου στη σκηνή και η σύνταξή τους είναι sprite(1).locH ή the locH of sprite 1.
Οι συντεταγμένες των ειδώλων ξεκινούν από την πάνω αριστερή γωνία της σκηνής, όπου βρίσκεται η θέση 0, 0 και τελειώνουν κάτω και δεξιά. Ο πρώτος αριθμός παριστά την οριζόντια τιμή και ο δεύτερος την κατακόρυφη. Η οριζόντια τιμή αυξάνει προς τα δεξιά και η κατακόρυφη προς τα κάτω.
Για να κάνουμε τώρα ένα είδωλο να μετακινείται στη σκηνή ενώ κάνουμε κλικ πάνω του και κρατάμε πατημένο το πλήκτρο του ποντικιού, επιλέγουμε το μέλος cast και ανοίγουμε το script του. Θα χρησιμοποιήσουμε τη συνάρτηση stillDown, η οποία ελέγχει αν πατάμε το πλήκτρο του ποντικιού. Αν πατάμε το πλήκτρο του ποντικιού, έχει την τιμή TRUE, διαφορετικά έχει την τιμή FALSE.
on mouseDown repeat while the mouseDown if rollOver(2) = TRUE then sprite(2).memberNum = 29 repeat while the stillDown sprite(1).locV = sprite(1).locV - 1 updateStage end repeat else sprite(2).memberNum = 28 end if updateStage end repeat sprite(2).memberNum = 28 updateStage end
Προσθέσαμε απλώς έναν βρόχο που ελέγχει αν είναι πατημένο το πλήκτρο του ποντικιού και αν ναι, μετακινεί το είδωλο που βρίσκεται στο κανάλι 1 προς τα πάνω κατά 1 pixel. Χρησιμοποιήσαμε το συμβάν mouseDown για να είμαστε μέσα στο handler για όσο χρόνο παραμένει πατημένο το πλήκτρο του ποντικιού. Αν χρησιμοποιούσαμε το συμβάν mouseUp, θα έπρεπε να αφήνουμε το πλήκτρο του ποντικιού κάθε φορά για να ενεργοποιείται το συμβάν.