Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΑναστασούλα Αλεξάνδρου Τροποποιήθηκε πριν 8 χρόνια
1
Διδάσκων: Αθανάσιος Γ. Μαλάμος, αναπλ.. καθηγητής. Ίδρυμα / Τμήμα: Τ.Ε.Ι. Κρήτης /Τμήμα Εφαρμοσμένης Πληροφορικής και Πολυμέσων Τίτλος Μαθήματος :Κωδικός :Εξάμηνο : Δ Προγραμματισμός Πολυμέσων Τύπος Μαθήματος : ΕΥΘεωρητικό/Ασκήσεις 2/1 Εργαστηριακό 2
2
Στη θεωρία θα καλυφθούν: Εισαγωγή στην εικόνα τον ήχο και το βίντεο. Εισαγωγή στο σχεδιασμό τρισδιάστατων γραφικών Προγραμματισμός στο περιβάλλον Director ΜΧ με έμφαση στις γνώσεις που είναι απαραίτητες για κίνηση και animation καθώς και την εσωτερική δομή και λογική παιχνιδιών. Εισαγωγή και έλεγχος τρισδιάστατων γραφικών στο Director MX Το μοντέλο δυναμικής κίνησης HAVOK Περίγραμμα
3
Γιατί Director Το Director παραμένει να είναι ο παγκόσμιος Leader στις εφαρμογές πολυμέσων Έχει ενσωματωμένες δυνατότητες σχεδιασμού και διαχείρισης τρισδιάστατων γραφικών με το Shockwave που υποστηρίζει τόσο openGL όσο και DirectX. Δέχεται δυναμικό μοντέλο μέσω των Havoc xtras
4
Modeling constructive solid geometry implicit surfaces NURBS modeling Metaballs polygonal modeling subdivision surfaces Source Wikipedia
5
Constructive solid geometry (-) Source Wikipedia
6
Implicit surfaces Source Wikipedia
7
NURBS (non-uniform, rational B-spline) Source Wikipedia Non-uniform rational basis spline (NURBS) is a mathematical model commonly used in computer graphics for generating and representing curves and surfaces which offers great flexibility and precision for handling both analytic and freeform shapes.
8
Metaballs Metaballs are organic-looking n-dimensional objects (morphing like). The technique for rendering metaballs was invented by Jim Blinn in the early 1980s. Source Wikipedia
9
Polygonal modeling Source Wikipedia
10
subdivision surfaces Source Wikipedia A subdivision surface, in the field of 3D computer graphics, is a method of representing a smooth surface via the specification of a coarser piecewise linear polygon mesh.
11
Polygon Mesh representation
12
A polygon mesh is an unstructured grid that defines the shape of a polyhedral object in 3D graphics. The faces usually consist of simple convex polygons, since this simplifies processing (rendering, shape calculations) but may also be composed of more complex concave schemes. An unstructured grid is a tilling of an Euclidean plane or Euclidean space by simple convex shapes (triangles, rhombus, squares) in an irregular pattern. Unstructured grids require a list of vertices connectivity
13
Mesh modeling elements A vertex is a point in the shape that may express position (xyz) color, normal vector and texture coordinates. An edge is a connection between two vertices. A face is a closed set of edges, in which a triangle face has three edges, and a quad face has four edges. A polygon is a set of faces. Surfaces are groups of polygons or faces used for smooth regions
14
Polygon meshes may be represented in a variety of ways, using different methods to store the vertex, edge and face data. These include: Face-Vertex Meshes A list of vertices associated to the polygons that point to the vertices Meshes representations Source: wikipedia
15
Winged-Edge Meshes An edge is associated with two vertices, two faces, and four (the outer two of each side) of the outgoing edges Source: wikipedia
16
Vertex-Vertex Meshes A vv mesh represents only vertices with the neighborhood vertices. The simplicity of the representation allows for many efficient operations to be performed on meshes.
17
Corner-Table or triangle fan is a primitive technique that describes a set of connected triangles that share one common vertex. Corner-Table or triangle fan
19
A variety of formats are available for storing 3d polygon data. The most popular are: .3ds,.max, which is associated with 3D Studio Max3D Studio Max .mb and.ma, which are associated with MayaMaya .lwo, which is associated with LightwaveLightwave .lxo, which is associated with modo (software)modo (software) .obj (Wavefront's "The Adanced Visualizer")obj .c4d associated with Cinema 4DCinema 4D .dxf,.dwg,.dwf, associated with AutoCADdxfAutoCAD .md3,.md2, associated with the Quake series of gamesQuake .fbx (Alias) .rwx (Renderware) .wrl (VRML 2.0) .blend, which is associated with BlenderBlender .jt (UGS).jtUGS .stl used in rapid prototyping.stlrapid prototyping .ply used to store data from 3D scanners.ply3D scanners .dae (COLLADA)COLLADA
20
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Δημιουργία του πρώτου αρχείου director Επιλέξτε: File>New>Movie
21
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Ε ισαγωγή στα συστατικά τμήματα του περιβάλλοντος προγραμματισμού Τα 3 κύρια συστατικά του Director: Stage: η σκηνή της ταινίας. Στο παράθυρο αυτό προβάλλεται η εφαρμογή και γίνεται εύκολα ο καθορισμός των θέσεων και διαστάσεων των αντικειμένων που θα εμφανιστούν. Κάθε αντικείμενο που εμφανίζεται στο Stage δεν είναι παρά ένα αντίγραφο ενός cast member και το ονομάζουμε sprite. Score: η «παρτιτούρα» της ταινίας. Στο παράθυρο αυτό γίνεται η σύνθεση της εφαρμογής. Ποιο αντικείμενο, σε ποια χρονική στιγμή και για πόση διάρκεια, θα κάνει την εμφάνισή του στο Stage, καθώς και πλήθος άλλων παραμέτρων καθορίζονται στο Score. Cast: το κάστ των ηθοποιών που συμμετέχουν στην ταινία. Στο παράθυρο αυτό εισάγονται όλοι οι πόροι της εφαρμογής (cast members): όλα τα κείμενα, τα γραφικά, οι εικόνες, οι ήχοι, τα τμήματα κώδικα που ελέγχουν την εφαρμογή, τα βίντεο, οι γραμματοσειρές κλπ. Αν κάποιο από τα παραπάνω συστατικά δεν υπάρχει στην οθόνη μπορείτε να το εμφανίσετε με την επιλογή Window > Stage, Window > Score και Window > Cast, αντίστοιχα.
22
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Ε ισαγωγή στα συστατικά τμήματα του περιβάλλοντος προγραμματισμού Τα 4 βοηθητικά συστατικά του Director είναι: Property Inspector: Κάθε cast member και sprite σε μια ταινία καθώς και η ίδια η ταινία έχουν ορισμένες ιδιότητες. Στο παράθυρο αυτό μπορούμε να δούμε και να αλλάξουμε τις τιμές των ιδιοτήτων αυτών. Το περιεχόμενο του παραθύρου μεταβάλλεται ανάλογα με το αντικείμενο που είναι επιλεγμένο την εκάστοτε στιγμή (μέσω του Score ή του Stage), προβάλλοντας τις ιδιότητές του. Control panel. Το παράθυρο αυτό δίνει τη δυνατότητα ελέγχου της εκτέλεσης κατά τη δημιουργία της εφαρμογής. Μπορούμε να μεταφερθούμε σε συγκεκριμένα frames, να μεταβάλλουμε το frame rate της εκτέλεσης, την ένταση του ήχου, καθώς και να ξεκινήσουμε/σταματήσουμε την εκτέλεση. (1 / 2)
23
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Ε ισαγωγή στα συστατικά τμήματα του περιβάλλοντος προγραμματισμού Τα 4 βοηθητικά συστατικά του Director είναι:(συνέχεια) Script window: Το παράθυρο αυτό παρέχει τη δυνατότητα να εισάγουμε μια πιο πολύπλοκη διαδραστικότητα στην εφαρμογή μας με τη συγγραφή κώδικα σε γλώσσα Lingo ή JavaScript. Message window: Το παράθυρο αυτό δίνει τη δυνατότητα δοκιμών και ελέγχου των αποτελεσμάτων κώδικα Lingo ή JavaScript, και μπορεί να χρησιμοποιηθεί με δύο τρόπους. standard mode, όπου εισάγουμε και εκτελούμε άμεσα τμήματα κώδικα ώστε να ελέγξουμε την ορθότητά τους προτού τα εντάξουμε στον κώδικα της εφαρμογής μας. trace mode, όπου κατά την εκτέλεση της εφαρμογής αναφέρονται αναλυτικά όλα τα βήματα εκτέλεσης όλου του κώδικα καθώς και τα αποτελέσματα που παράγει, με σκοπό να εντοπιστούν τυχόν εσφαλμένα αποτελέσματα. (2 / 2)
24
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Θέτοντας ιδιότητες στο περιβάλλον Stage Size. Οι διαστάσεις της εφαρμογής σε pixels Channels. Πόσα κανάλια Sprite να έχει το Score Color. Το χρώμα που θα έχει το Stage (φόντο της εφαρμογής)
25
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Εισαγωγή αρχείων μέσων (κείμενο, εικόνα, ήχος, βίντεο) Για τη δημιουργία ενός Director movie, χρειαζόμαστε τα cast members, τα οποία θα χρησιμοποιηθούν (ως πόροι) για τη δημιουργία των αντικειμένων που θα εμφανιστούν στο Stage και στο Score. Για να εισάγουμε cast members : 1.Επιλέγουμε ένα κενό κελί του Cast. (1 / 4) Τα cast members μπορεί να είναι τύπου κειμένου, γραφικών, ήχου, βίντεο, κώδικα, κλπ.
26
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Εισαγωγή αρχείων μέσων (κείμενο, εικόνα, ήχος, βίντεο) Για να εισάγουμε cast members : (συνέχεια) 2.Επιλέγουμε File > Import και εμφανίζεται το παράθυρο διαλόγου εισαγωγής αρχείων. 3.Για να εισάγουμε ένα αρχείο από το Internet, κάνουμε κλικ στο Internet και εισάγουμε ένα URL στο πεδίο Find. 4.Για την εισαγωγή τοπικών αρχείων, επιλέγουμε τον τύπο του αρχείου (Files of Type) από την εμφανιζόμενη λίστα. (2 / 4)
27
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Εισαγωγή αρχείων μέσων (κείμενο, εικόνα, ήχος, βίντεο) Για να εισάγουμε cast members: (συνέχεια) 5.Επιλέγουμε ένα ή περισσότερα αρχεία ως εξής: Διπλό κλικ στο αρχείο Επιλέγουμε αρχεία και πατάμε Add Επιλέγουμε Add All (3 / 4)
28
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Εισαγωγή αρχείων μέσων (κείμενο, εικόνα, ήχος, βίντεο) Για να εισάγουμε cast members: (συνέχεια) 6.Από το Media pop-up menu, επιλέγουμε το είδος της εισαγωγής: -Standard Import. Μόνο το περιεχόμενο των αρχείων. -Link to External File. Μόνο το path ή το URL των αρχείων ενώ το περιεχόμενό τους εισάγεται στο movie μόνο κατά την εκτέλεση της εφαρμογής. -Include Original Data for Editing. Εισάγεται το πλήρες αρχείο για τη δυνατότητα επεξεργασίας με εξωτερικό πρόγραμμα. (4 / 4) 7.Αφού τελειώσουμε με τις παραπάνω ρυθμίσεις πατάμε Import.
29
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Δημιουργία των Sprite Για να δημιουργήσουμε νέο Sprite: 1.Επιλέγουμε το frame του Score από το οποίο το Sprite θα πρωτοεμφανίζεται 2.Επιλέγουμε στο Cast το member που θέλουμε να έχει το Sprite και Είτε το σύρουμε σε κάποια θέση στο Stage Ή το σύρουμε στο Score οπότε τοποθετείται στο κέντρο του Stage. Σύροντας ένα cast member στο Stage ή στο Score, δημιουργείται ένα Sprite (διάρκειας 30 frame) το οποίο εμφανίζεται και στα δύο συστατικά. Απεικόνιση των Sprites στο Score και στο Stage
30
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Ρύθμιση του ρυθμού (tempo) Tempo είναι ο αριθμός των frames ανά second που επιχειρεί να παίξει το Director. Η ταχύτητα εκτέλεσης εξαρτάται κυρίως από το (πόσα sprites περιέχουν κλππεριεχόμενο των frames.) καθώς και την ισχύ του υπολογιστικού συστήματος που γίνεται η εκτέλεση. (1 / 2) Το Tempo μπορεί να ελεγχθεί από το tempo κανάλι του Score καθώς και με κώδικα με τη χρήση της μεθόδου puppetTempo (). Οι ρυθμίσεις του Tempo διασφαλίζουν τη μέγιστη ταχύτητα μετάβασης από frame σε frame. Δεν επηρεάζουν τη διάρκεια των transition effects, του ήχου και του βίντεο.
31
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Ρύθμιση του ρυθμού (tempo) Ο καθορισμός του Tempo στο Score γίνεται ως εξής: 1. Ανοίγουμε το παράθυρο των ρυθμίσεων του Tempo (με διπλό κλικ σε κελί του tempo καναλιού) (2 / 2) 2. Επιλέγουμε στο παράθυρο διαλόγου Frame Properties: Tempo μια από τις επόμενες δυνατότητες: Tempo, για να θέσουμε νέα τιμή Tempo από το τρέχον frame και μετά. Wait, για να δημιουργήσουμε μια παύση του movie, στο τρέχον frame, συγκεκριμένης διάρκειας. Wait for Mouse Click or Key Press, για να δημιουργήσουμε μια παύση του movie, στο τρέχον frame, έως ότου συμβεί κάποιο mouse ή key event. Wait for Cue Point, για να για να δημιουργήσουμε μια παύση του movie, μέχρι ο ήχος ή το βίντεο που παίζει να περάσει κάποιο εσωτερικό του cue point. 3. Τέλος, επιλέγουμε OK.Ένας αριθμός σχετικός με τη ρύθμιση που κάναμε εμφανίζεται στο κελί του tempo καναλιού.
32
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Κατανόηση των Keyframes Τα keyframes είναι πολύ χρήσιμα στη δημιουργία tweening animation ενός Sprite. Μεταξύ των keyframes ενός tweening παράγονται αυτόματα όλα τα ενδιάμεσα frames. Τα keyframes υποδεικνύουν τα σημεία του animation στα οποία πρέπει να γίνει μεταβολή των χαρακτηριστικών του Sprite. Τα χαρακτηριστικά (properties) που θέτουμε στα keyframes κατά το tweening είναι: position, size, rotation, skew, blend, και foreground και background color.
33
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Έλεγχος της ροής του movie Δίνοντας εντολή για την εκτέλεση (play) της εφαρμογής (movie), γίνεται η σειριακή εκτέλεση όλων των frames. Σε author mode, μέσω του Control panel καθώς και με τη βοήθεια κώδικα. Σε runtime mode, μόνο με τη βοήθεια κώδικα. Έλεγχος ροής με κώδικα: Με Lingo ή JavaScript κώδικα μπορούμε να δώσουμε εντολή στο movie να μεταβεί σε: άλλο frame, go to frame 20 ή go to marker( "intro" ) άλλα movies, go to movie “whichmovie" Internet movies, gotoNetMovie "http://www.yourserver.com/movies/movie1.dcr" web σελίδες, gotoNetPage "http://www.yourserver.com/movies/intro.html" Επίσης μπορούμε να κάνουμε το movie να επαναλαμβάνει: το ίδιο frame, go to the frame ομάδα από frames, go loop (στον αμέσως προηγούμενο marker)
34
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Δημιουργία διακοπής με script Επανάληψη του ίδιου frame με τη βοήθεια framescript σε: Lingo on exitFrame go to the frame end και JavaScript on exitFrame _movie.go(_movie.frame) end
35
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Δημιουργία keyframe Επιλέγουμε το Sprite στο Score Δημιουργούμε το keyframe στο τρέχον frame (playback head) Είτε με Insert > Keyframe από το μενού ή με δεξί κλικ στο Sprite επιλέγουμε Insert keyframe από το μενού που εμφανίζεται
36
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Δημιουργία κουμπιών Δημιουργία push button, radio button, ή check box: 1.Ανοίγουμε την Tool palette επιλέγοντας Window > Tool Palette, αν δεν υπάρχει ήδη στο προσκήνιο. 2.Επιλέγουμε έναν τύπο κουμπιού Push Button, Radio Button, ή Check Box tool από την Tool palette. 3.Κάνουμε κλικ στο κουμπί και σύρουμε στο Stage. 4.Εισάγουμε την ετικέτα στο πεδίο κειμένου δίπλα στο κουμπί. 5.Προσθέτουμε behavior στο κουμπί. Με δεξί κλικ στο Sprite του κουμπιού εμφανίζεται ο Script Editor όπου εισάγουμε τον κώδικα. (1 / 2)
37
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Οικοδόμηση της διεπαφής Δημιουργία κουμπιών Παράδειγμα Lingo script ενός κουμπιού. on mouseUp me go marker (sprite(me.spriteNum).member.text ) end Στο παράδειγμα, όταν το event mouseUp γίνεται στο κουμπί, τότε το movie μεταβαίνει στο frame με ετικέτα (marker) η οποία αναγράφει το κείμενο του κουμπιού που πατιέται. Το keyword me υποδηλώνει το instance του Behavior στο οποίο ανήκει το script. Η έκφραση me.spriteNum επιστρέφει κάθε φορά τον αριθμό του Sprite που φέρει το Behavior αυτό. Αν πρόκειται για το Sprite 4, τότε me.spriteNum = 4. Εναλλακτικά, χωρίς το me ο κώδικας μπορεί να γίνει: on mouseUp go marker (sprite(15).member.text ) end Τώρα το movie θα πάει στο frame με ετικέτα όμοια με το κείμενο του sprite 15 (και όχι κατ’ ανάγκη με το κείμενο του κουμπιού που πατιέται). (2 / 2)
38
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση βίντεο Υποστηριζόμενα formats Τα format που υποστηρίζει το Director είναι: Windows Media, αρχεία DVD, AVI, QuickTime, RealMedia. Κατά την εισαγωγή (File>Import) ενός βίντεο, το cast member που δημιουργείται μένει πάντα συνδεδεμένο με το εξωτερικό αρχείο του βίντεο, ακόμα και αν επιλέξουμε Standard Import. Έτσι η διανομή του movie απαιτεί να υπάρχουν και όλα τα συνδεδεμένα αρχεία. Επίσης το QuickTime πρέπει να είναι εγκαταστημένο προκειμένου να μπορούν να παιχτούν movies που περιέχουν αυτόν τον τύπο βίντεο. Ομοίως, ο RealPlayer 8 ή ο RealOne Player, πρέπει να είναι εγκαταστημένα στον υπολογιστή ώστε να μπορούν μπορούν να παιχτούν movies που περιέχουν RealMedia βίντεο.
39
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση βίντεο Διασφάλιση της επιτυχούς αναπαραγωγής του ήχου Στα Windows, όταν έναν ένας ήχος παίζει σε κάποιο sound channel του movie υπερισχύει του ήχου ενός βίντεο ή Flash movie. Εμποδίζει τον ήχο του βίντεο ακόμη και όταν ο ήχος του sound channel σταματήσει. Ομοίως συμβαίνει και όταν ο ήχος ενός βίντεο έχει ξεκινήσει πριν από τον ήχο ενός sound channel, ο πρώτος ακυρώνει την εκτέλεση του δεύτερου. Για να αναμίξουμε QuickTime ήχο με εσωτερικό ήχο του Director κάνουμε χρήση του soundDevice (system property). Οι δυνατές τιμές που μπορεί να περιέχονται στο system property soundDeviceList, στο οποίο μπορεί να περιλαμβάνονται διάφορες μηχανές (devices) ήχου. (1 / 2)
40
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση βίντεο Διασφάλιση της επιτυχούς αναπαραγωγής του ήχου Δυνατές τιμές του soundDevice (system property): MacroMix (Windows)—Ο ελάχιστος κοινός παρανομαστής για εκτέλεση στα Windows. DirectSound (Windows)—Ένα Xtra (DirectSound.x32) που εξασφαλίζει αξιόπιστη εκτέλεση, μίξη και εναλλαγή μεταξύ ήχων από διαφορετικές πηγές ensures reliable playing, Είναι η προκαθορισμένη τιμή του soundDevice στο Director. Για τη χρήση του Xtra απαιτείται η εγκατάσταση του DirectSound 5 και άνω της Microsoft. Δεν υποστηρίζεται στα Windows NT 4. QT3Mix (Windows)—Αναμειγνύει ήχο του Director και του QuickTime καθώς και άλλων εφαρμογών που χρησιμοποιούν DirectSound. Απαιτείται η εγκατάσταση του QuickTime This device requires that QuickTime be installed. MacSoundManager (Macintosh)—Το μοναδικό sound device για Macintosh. (2 / 2)
41
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση βίντεο QuickTime Το Director παρέχει πολλές δυνατότητες ελέγχου QuickTime βίντεο. Εφαρμογή μάσκας σε βίντεο Απόκριση σε διάδραση του χρήστη Περιστροφή και μεταβολή των διαστάσεων του βίντεο Πανοραμική πλοήγηση σε QuickTime VR
42
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση βίντεο MPEG2-DVD Σε ένα Director movie μπορούμε να συνδέσουμε DVD περιεχόμενο το οποίο μπορεί να εμφανιστεί στο DVD media editor. Δεν μπορούν ωστόσο να γίνουν αλλαγές στο περιεχόμενο αυτό, ενώ μπορούμε να θέσουμε ορισμένες ιδιότητες της εκτέλεσης. Όταν συνδέσουμε DVD περιεχόμενο, αυτό μπορεί να βρίσκεται είτε σε ένα DVD δίσκο στον οδηγό, ή σε ένα DVD φάκελο στο σκληρό δίσκο. Και στις δύο περιπτώσεις, ένας οδηγός DVD και ένας DVD player και decoder πρέπει να υπάρχει εγκατεστημένα στο σύστημα.
43
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση κώδικα (Script) Κατανόηση των Events Movie events PrepareMovie δηλώνει τη στιγμή πριν το ξεκίνημα του movie. StartMovie δηλώνει τη στιγμή στο ξεκίνημα του movie, αμέσως μετά το PrepareMovie. StopMovie δηλώνει τη στιγμή στο σταμάτημα της εκτέλεσης του movie BeginSprite δηλώνει τη στιγμή που το playback head πηγαίνει σε frame το οποίο περιέχει κάποιο sprite το οποίο δεν υπήρχε στο προηγούμενο frame. EndSprite δηλώνει τη στιγμή που το playback head αφήνει κάποιο sprite και πηγαίνει σε frame το οποίο δεν περιέχει το sprite αυτό. Mouse events MouseUp δηλώνει τη στιγμή που το αριστερό πλήκτρο του ποντικιού αφήνεται από πατημένο. MouseDown δηλώνει τη στιγμή που το αριστερό πλήκτρο του ποντικιού πατιέται. RightMouseUp δηλώνει τη στιγμή που το δεξί πλήκτρο του ποντικιού αφήνεται. RightMouseDown δηλώνει τη στιγμή που το δεξί πλήκτρο του ποντικιού πατιέται. (1 / 2)
44
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση κώδικα (Script) Κατανόηση των Events MouseEnter δηλώνει τη στιγμή που το ποντίκι εισέρχεται στην περιοχή ενός Sprite. MouseLeave δηλώνει τη στιγμή που το ποντίκι εξέρχεται από την περιοχή ενός Sprite. MouseWithin δηλώνει τη στιγμή που το ποντίκι εξακολουθεί να βρίσκεται στην περιοχή ενός Sprite. KeyUp δηλώνει τη στιγμή που κάποιο πλήκτρο του πληκτρολογίου αφέθηκε από πατημένο, σε ένα text ή field sprite. KeyDown δηλώνει τη στιγμή που κάποιο πλήκτρο του πληκτρολογίου πατήθηκε, σε ένα text ή field sprite. Frame Events PrepareFrame δηλώνει τη στιγμή που το playhead εγκατέλειψε το προηγούμενο frame και πριν μπει στο επόμενο. EnterFrame δηλώνει τη στιγμή που το playhead μπαίνει στο frame. ExitFrame δηλώνει τη στιγμή που το playhead εγκαταλείπει το frame. (2 / 2)
45
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση κώδικα (Script) Χειρισμός Sprite με Script Τα script στο Director είναι διαφόρων τύπων, υπακούοντας στην ιεραρχία: 1. Movie script. Ελέγχει συνολικά το movie και περιέχει event handlers οι οποίοι μπορούν να κληθούν από οποιονδήποτε άλλου τύπου script. 2. Frame script (behavior). Ελέγχει το frame και τα sprites που περιέχει. 3. Member script. Το script που υπάρχει στο cast member και ελέγχει όλα τα sprites που φέρουν το member αυτό. 4. Sprite behavior. Το script που ελέγχει το sprite στο οποίο έχει συνδεθεί. Όταν δημιουργηθεί ένα event σε ένα sprite, αυτό θα το διαχειριστεί ο event handler με προτεραιότητα από κάτω προς τα πάνω. Δηλαδή, αν γίνει π.χ. mouseDown σε ένα sprite θα εκτελεστεί ο mouseDown handler που βρίσκεται στο sprite, και αν δεν υπάρχει τότε σειρά έχει ο mouseDown handler που βρίσκεται στο member, κλπ. Με τη Library palette έχουμε πρόσβαση σε behaviors που περιλαμβάνονται στο Director. Το Director επιτρέπει να συνδέσουμε ένα behavior με πολλά sprites και frames, καθώς και σε ένα sprite να συνδέσουμε πολλά behaviors.
46
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση κώδικα (Script) Δημιουργία Projector Ένας projector είναι μια stand-alone έκδοση ενός movie. Οι projectors απαιτούν ορισμένα Xtras προκειμένου να χρησιμοποιήσουν το κείμενο, το flash περιεχόμενο που περιέχει ένα movie, να κάνουν μια Internet επικοινωνία, κλπ. Το Director περιλαμβάνει σε ένα movie τα πιο συνηθισμένα Xtras. Από το μενού Modify>Movie>Xtras, μπορούμε να ανοίξουμε το Movie Xtras παράθυρο διαλόγου όπου μπορούμε να προσθέσουμε ή να αφαιρέσουμε Xtras σε ένα movie, ενώ με τη βοήθεια της επιλογής Include in Projector αυτά θα ενσωματωθούν στον Projector που περιέχει το movie. Τέλος με την επιλογή Download If Needed ο χρήστης παροτρύνεται να κατεβάσει το απαιτούμενο Xtra από συγκεκριμένο δικτυακό τόπο (δηλωμένο στο Xtrainfo.txt) αν δεν υπάρχει εγκατεστημένο στον υπολογιστή του. (1/ 3)
47
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση κώδικα (Script) Δημιουργία Projector Για να δημιουργήσουμε έναν projector: 1.Επιλέγουμε File > Publish Settings 2.Στο Publish Settings παράθυρο, στο Formats tab, επιλέγουμε Projector στην ενότητα Publish. 3.Στο Player type pop-up μενού του Projector tab, επιλέγουμε Standard για τη δημιουργία ενός απλού Projector, ο οποίος περιλαμβάνει ασυμπίεστο τον κώδικα του player, και ξεκινά γρήγορα την εκτέλεση ή Shockwave για τη δημιουργία ενός Shockwave projector, ο οποίος δεν περιέχει τον κώδικα του player καθώς εκτελείται από τον Shockwave Player που υπάρχει εγκατεστημένος στον υπολογιστή. Αν δεν βρεθεί ο τελευταίος τότε ο χρήστης παροτρύνεται να τον κατεβάσει. (2 / 3)
48
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Χρήση κώδικα (Script) Δημιουργία Projector Για να δημιουργήσουμε έναν projector:(συνέχεια) 4.Επιλέγουμε Animate in Background, αν θέλουμε η ταινία να παίζει ακόμη και όταν ο χρήστης μεταβεί σε άλλη εφαρμογή. Full screen, αν θέλουμε η ταινία καταλαμβάνει ολόκληρη την οθόνη. Center stage in monitor, αν θέλουμε η ταινία να προβάλλεται στο κέντρο της οθόνης. Escape key terminates, αν θέλουμε ο χρήστης να βγαίνει από την εφαρμογή με το πλήκτρο ESC. Reset Monitor to Match Movie’s Color Depth, για να γίνεται αυτόματη προσαρμογή των χρωμάτων της οθόνης στα χρώματα της ταινίας. 5.Τέλος επιλέγουμε ΟΚ. (3 / 3)
49
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Εισαγωγή Το Shockwave είναι μια συμπιεσμένη έκδοση των δεδομένων που περιέχονται σε ένα movie, και δεν περιέχει player. Αναπτύχθηκε κυρίως για διανομή μέσω Internet και εκτέλεση σε web browser. Ένας ακόμη λόγος για τη δημιουργία Shockwave είναι η συμπίεση δεδομένων για διανομή μέσω δίσκου όταν το movie είναι ενσωματωμένο σε projector. Επιπλέον, εκτός από τη συμπίεση των δεδομένων το Shockwave format είναι «προστατευμένο» καθώς απομακρύνει όλη εκείνη την πληροφορία που είναι αναγκαία για την επεξεργασία του movie.
50
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Δημιουργία Shockwave movie Για τη δημιουργία ενός Shockwave movie (με κατάληξη DCR), αφού έχουμε διασφαλίσει ότι στο File > Publish settings έχουμε θέσει την επιλογή Shockwave File (DCR), επιλέγουμε File > Publish. Αν το Shockwave movie προορίζεται για το Internet και απαιτούνται κάποια Xtras, σιγουρευτείτε ότι τα έχετε συμπεριλάβει στα Movie Xtras και ότι η επιλογή Download If Needed είναι ενεργή για κάθε τέτοιο Xtra. (1 / 3)
51
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Δημιουργία Shockwave movie Shockwave ρυθμίσεις 1.Επιλέγουμε File > Publish Settings και το Shockwave tab. 2.Επιλέγουμε τις ρυθμίσεις για τους χρήστες: Version: Shockwave Player 10 ή Shockwave Player 8.5 Image compression: Standard. Χρησιμοποιούνται οι τεχνικές συμπίεσης του Director έκδοσης 4-7. Κατάλληλο για γραφικά με λίγα χρώματα. JPEG. Επιλέγουμε Image Quality μεταξύ 0-100. Όσο μεγαλύτερη τιμή τόσο μικρότερη συμπίεση. Compression enabled: Επιλέγουμε το επίπεδο συμπίεσης του ήχου σε kBits/sec. Convert Stereo to Mono: Μετατροπή των stereo ήχων σε mono, αφού όμως είναι επιλεγμένο το Shockwave Audio Compression. (2 / 3)
52
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Δημιουργία Shockwave movie Shockwave ρυθμίσεις(συνέχεια) Include Cast Member Comments: Επιλέγουμε να συμπεριληφθούν τα σχόλια των cast members που έχουν εισαχθεί στο πεδίο Comments του Property inspector. Τα σχόλια αυτά είναι προσβάσιμα με Lingo ή JavaScript στο DCR. Volume Control: Επιτρέπει στο χρήστη να ρυθμίζει την ένταση του ήχου του movie. Transport Control: Παρέχει στο χρήστη λειτουργίες εκτέλεσης, όπως rewind, stop, και step στα frames του movie. (3 / 3)
53
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Χρήση των XRAS Πολλές δυνατότητες στο Director όπως η χρήση κειμένου, διανυσματικών σχημάτων (vectors), η εισαγωγή διαφόρων τύπων μέσων, ελέγχονται από Xtras. Κάθε φορά που δημιουργείται ένα sprite το οποίο απαιτεί ένα Xtra, το Director το προσθέτει στη λίστα των Movie Xtras (επιλογή Modify>Movie>Xtras). Αν σβήσουμε όμως το sprite αυτό, το Xtra παραμένει στη λίστα. Το Director δεν εξετάζει ποια Xtras χρειάζεται ο κώδικας Lingo ή JavaScript που χρησιμοποιούμε. Γι αυτό πρέπει εμείς να έχουμε τον έλεγχο του ποια Xtras υπάρχουν στη λίστα των Movie Xtras, ώστε να ελέγχουμε και τις δυνατότητες και το μέγεθος του movie μας, πράγμα πολύ σημαντικό ιδιαίτερα για τα movies που διανέμονται στο Internet. Για διανομή ενός Shockwave movie στο Internet, ελέγχουμε τη λίστα των Movie Xtras και χρησιμοποιούμε τη δυνατότητα Download If Needed για κάθε απαιτούμενο Xtra. Σημείωση: Για movies που διανέμονται σε δίσκους, ένας τρόπος να περιλάβουμε τα Xtras είναι να βάλουμε τα αρχεία τους (*.x32) σε έναν φάκελο με το όνομα Xtras, και το φάκελο αυτό μαζί με το αρχείο του projector (δηλ. στο ίδιο path και τα δύο). Με τον τρόπο αυτό, δεν πρέπει τα Xtras να περιληφθούν και στο αρχείο του projector.
54
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Εξωτερικά αρχεία (ήχος, βίντεο) Γενικά για λόγους ασφάλειας των χρηστών, η χρήση εξωτερικών αρχείων συνδεδεμένων με ένα Shockwave movie δεν επιτρέπεται, με μια μόνο εξαίρεση: επιτρέπεται το διάβασμα των αρχείων που βρίσκονται σε φάκελο με το όνομα dswmedia σε οποιοδήποτε βάθος υπό-φακέλων μέσα σε αυτόν. Προετοιμασία για μεταφορά σε web server Δοκιμάζουμε τοπικά το movie μας και τα συνδεδεμένα αρχεία πριν τα ανεβάσουμε στο web server. Βάζουμε το movie, τα συνδεδεμένα cast και αρχεία (χρησιμοποιώντας στη διασύνδεση σχετικά paths) σε μια δομή φακέλων μέσα σε έναν φάκελο dswmedia. Όταν ανεβάσουμε την εφαρμογή μας στο server, φροντίζουμε η δομή καταλόγων να είναι η ίδια που ήταν και στο τοπικό μας σύστημα. Τα ονόματα των αρχείων και φακέλων που χρησιμοποιούμε δεν πρέπει να έχουν κενά ή κεφαλαία γράμματα, και οι καταλήξεις των αρχείων να είναι γνωστές, ώστε να είναι προσβάσιμα από το server.
55
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Έκδοση Shockwave Σύνδεση σε HTML Για την χρήση του Shockwave movie σε HTML σελίδα, επιλέγουμε HTML όπου παρέχεται η δυνατότητα να τεθούν ορισμένες ιδιότητες του Shockwave, όπως πώς θα φαίνεται το movie όταν μεταβληθεί το παράθυρο του browser, αν θα έχει σταθερό μέγεθος ή θα προσαρμόζεται στις διάφορες διαστάσεις του browser, το χρώμα που θα έχει το background του HTML, κλπ.
56
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director 3D στο Director 3D Cast member Ένα 3D cast member περιέχει μια σύνθετη εσωτερική δομή η οποία ονομάζεται world και αποτελείται από ένα σύνολο αντικειμένων, όπως model resources, models (τα αντικείμενα που εμφανίζονται), lights, και cameras. Η δομή του world έχει δενδρική μορφή parent-child node ιεραρχίας. Το 3D Xtra που διαχειρίζεται τους 3D κόσμους επιτρέπει την εισαγωγή 3D στο movie, με τη μορφή κόσμων ή μοντέλων τα οποία έχουν κατασκευαστεί με άλλα προγράμματα. Τα αρχεία μοντέλων από τρίτα προγράμματα πρέπει να είναι σε W3D (Web 3D) format. τη διαμόρφωση των κόσμων με κώδικα. Προσθαφαίρεση μοντέλων, ρύθμιση φωτισμού, κάμερων. (1 / 3)
57
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director 3D στο Director 3D Cast member Ένα sprite ενός 3D cast member είναι μια άποψη του κόσμου από μια κάμερα. Αν φανταστούμε το 3D cast member σαν ένα δωμάτιο επιπλωμένο και με κάμερες τοποθετημένες σε διάφορα σημεία, τότε το sprite μας δίνει την άποψη από μια κάμερα μόνο. Μια σημαντική διαφορά μεταξύ του 3D cast member και των άλλων cast members είναι ότι τα μοντέλα που περιέχει δεν είναι ανεξάρτητα sprites, αλλά ακέραια τμήματα του 3D cast member. Το 3D cast member αποτελείται από: Model resources, τα στοιχεία τριδιάστατης γεωμετρίας για την απόδοση (render) των μοντέλων. Models, τα οπτικοποιημένα αντικείμενα του 3D cast member τα οποία χρησιμοποιούν γεωμετρία κάποιου model resource. (2 / 3)
58
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director 3D στο Director 3D Cast member Το 3D cast member αποτελείται από: (συνέχεια) Shaders, η μέθοδος απεικόνισης των επιφανειών των μοντέλων σε σχέση με τον τρόπο που θα ανακλούν το φως και πως θα φαίνεται η επιφάνειά τους, π.χ. Μεταλική, πλαστική κλπ. Textures, τα απλά 2D images που χρησιμοποιούνται στις επιφάνειες των μοντέλων. Motions, τα προκατασκευασμένα animation της κίνησης των μοντέλων, τα οποία μπορούν να συνδυαστούν και να παραχθούν πιο σύνθετα animations. Lights, οι πηγές φωτισμού που μπορεί να είναι κατευθυνόμενες ή να παράγουν διάχυτο φως. Cameras, οι απόψεις του χώρου από διάφορες θέσεις. Groups, ομάδες από μοντέλα, φώτα και κάμερες σε σχετικές θέσεις μεταξύ τους, κάνοντας ευκολότερη την μετακίνηση του συνόλου στο χώρο από την μετακίνηση του καθενός χωριστά. (3 / 3)
59
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director 3D στο Director Έλεγχος του Shockwave 3D Ένα 3D cast member μπορεί να ελεγχθεί: Με τη βοήθεια του Shockwave 3D window, στο οποίο μπορούν να τεθούν με εύκολο τρόπο ορισμένες ιδιότητες του 3D cast member. Με κώδικα. Ορισμένες βασικές 3D λειτουργίες παρέχονται από τα 3D built-in behaviors της βιβλιοθήκης (Behavior library) του Director.
60
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Βάσεις δεδομένων στο Director DB Xtras Μια σειρά από third party Xtras για Director κυκλοφορούν στο εμπόριο, με τη βοήθεια των οποίων το Director μπορεί να επικοινωνήσει με databases. Με αυτόν τον τρόπο το Director μπορεί να υποστηρίξει οποιαδήποτε βάση δεδομένων αρκεί να υπάρχει το κατάλληλο Xtra. Μερικά πολύ γνωστά DB Xtras είναι: V12 Database Engine της Integration New Media, Inc, μια μη σχεσιακή βάση για σχετικά απλές εφαρμογές. UltimateDBIO, υποστηρίζει διάφορους τύπους βάσεων όπως SQL, MySQL, Access, Excel. Data Linker Xtra, υποστηρίζει SQL Server, mySQL, Access, Excel, Dbase. Arca Database Xtra, ειδικά σχεδιασμένο για Director developers, το οποίο υποστηρίζει SQL statements. ADO Xtra, κατάλληλο για δικτυακές βάσεις, υποστηρίζει Access, SQL Server, Oracle, ODBC.
61
Προγραμματισμός Πολυμέσων με τη χρήση Macromedia Director Βάσεις δεδομένων στο Director Χρήση της SQL Δεν υπάρχει μια γλώσσα που χρησιμοποιείται από το Director για επικοινωνία με βάσεις δεδομένων, καθώς την επικοινωνία αυτή αναλαμβάνουν τα διάφορα DB Xtras που κυκλοφορούν στο εμπόριο. Έτσι η χρήση της SQL υποστηρίζεται στο βαθμό που τα σχετικά Xtras την υποστηρίζουν.
62
Lingo Programming Βασική Δομή Syntax Lingo is not case-sensitive -- Lingo syntax on mouseDown _sound.beep() End on prosthese(a, b) c = a + b return c End myList1 = ["1", "2","3"] if "Hello Mr. Jones" contains "Hello" then soundHandler if _key.keyPressed() = SPACE then beep()
63
Lingo Programming Βασική Δομή Global variables -- Lingo syntax global gScript -- gScript is available to all handlers on mouseDown global gHandler gScript = 25 gHandler = 30 end on mouseUp global gHandler trace(gHandler) -- displays 30 End mySum = 5 + 5
64
Lingo Programming Βασική Δομή Operators +, -, *, /, Mod, <>,, >=, = and, Or, not &, &&
65
Lingo Programming Βασική Δομή Λογικοί έλεγχοι και επιλογή if _mouse.mouseMember = member(1) then _movie.go("Cairo") else if _mouse.mouseMember = member(2) then _movie.go("Nairobi") else _player.alert("You’re lost.") end if case (_key.key) of "a" : _movie.go("Apple") "b", "c": _movie.puppetTransition(99) _movie.go("Oranges") otherwise: _sound.beep() end case
66
Lingo Programming Βασική Δομή Επαναλήψεις repeat with n = 2 to 10 sprite(n).ink = 36 end repeat repeat with n = 10 down to 2 sprite(n).ink = 36 end repeat repeat while _mouse.mouseDown _sound.beep() end repeat repeat while _mouse.stillDown _sound.beep() if _movie.rollOver(1) then exit repeat end repeat
67
Lingo Programming Βασική Δομή Συναρτήσεις mySum = addThem(2, 4) -- calling statement on addThem a, b -- handler c = a + b return c -- returns the result to the calling statement End myHeight = sprite(2).jump(5) on jump(me,a) return a + 15 -- this handler works correctly, and returns 20 end on jump(a) return a + 15 -- this handler does not work correctly, and returns 0 end
68
Lingo Programming Βασική Δομή Πίνακες Δεδομένων και properties workerList = ["Bruno", "Heather", "Carlos"] -- using the Lingo list operator workerList = list("Bruno", "Heather", "Carlos") -- using list() workerList[2] = "Carlos" -- set the second value using the equal operator workerList.setAt(2, "Carlos") -- set the second value using setAt() name2 = workerList[2] -- use bracketed access to retrieve "Heather" name2 = workerList.getAt(2) -- use getAt() to retrieve "Heather" workerList = ["Bruno", "Heather", "Carlos"] -- define a linear list workerList.append("David") trace(workerList) -- displays ["Bruno", "Heather", "Carlos", "David"] sprite1Loc = [#left:100, #top:150, #right:300, #bottom:350] sprite1Loc = ["left",400, "top",550, "right",500, "bottom",750] sprite1Loc = propList("left",400, "top",550, "right",500, "bottom",750)
69
Multidimensional list1 = list(5,10) list2 = list(15,20) mdList = list(list1, list2) trace(mdList[1][2]) -- displays 10 trace(mdList[2][1]) -- displays 15
70
Δημιουργία μηνυμάτων στο Message Window put(Variablename) put(“Test”)
71
Διάγραμμα αντικειμένων
72
Lingo Programming Βασικές εντολές Sprite sprite(nameOrNum) 3dSprite = sprite(1) 3dSprite = sprite("Cave") 3dSprite = channel(3).sprite spriteObjRef.spriteNum MySpriteRef = sprite(me.spriteNum) spriteObjRef.member currMember = pMySpriteRef.member currMember = sprite(spriteNum).member sprite(spriteNum).member = member("DownPict") sprite(sprite1).intersects(sprite2) sprite(sprite1).within(sprite2)
73
Lingo Programming Βασικές εντολές SPRITE properties backColor locV blend (Sprite)locZ bottommember (Sprite) constraintname (Sprite) cursorquad editablerect (Sprite) endFrameright flipHrotation flipVskew foreColorspriteNum heightstartFrame inktop leftwidth locH
74
Lingo Programming Βασικές εντολές Movie _movie.marker(markerNameOrNum) _movie.delay(intTicks) _movie.goNext() _movie.castLib[castNameOrNum] theTemplate = _movie.displayTemplate
75
Lingo Programming Βασικές εντολές Movie Method beginRecording()newMember() cancelIdleLoad()preLoad() (Movie) clearFrame()preLoadMember() constrainH()preLoadMovie() constrainV()printFrom() delay()puppetPalette() deleteFrame()puppetSprite() duplicateFrame()puppetTempo() endRecording()puppetTransition() finishIdleLoad()ramNeeded() frameReady() (Movie)rollOver() go()saveMovie() goLoop()sendAllSprites() goNext()sendSprite() goPrevious()stopEvent() idleLoadDone()unLoad() (Movie) insertFrame()unLoadMember() label()unLoadMovie() marker()updateFrame() mergeDisplayTemplate()updateStage()
76
Lingo Programming Βασικές εντολές Movie Property aboutInfoframeTransition active3dRendereridleHandlerPeriod actorListidleLoadMode allowCustomCachingidleLoadPeriod allowGraphicMenuidleLoadTag allowSaveLocalidleReadChunkSize allowTransportControlimageCompression allowVolumeControlimageQuality allowZoomingkeyboardFocusSprite beepOnlastChannel buttonStylelastFrame castLibmarkerList centerStagemember (Movie) copyrightInfo (Movie)name displayTemplatepaletteMapping dockingEnabledpath (Movie) editShortCutsEnabledpreferred3dRenderer enableFlashLingopreLoadEventAbort exitLockscore fileFreeSizescoreSelection fileSizescript fileVersionsprite (Movie) fixStageSizestage frametimeoutList frameLabeltraceLoad framePalettetraceLogFile frameScripttraceScript frameSound1updateLock frameSound2useFastQuads frameTempoxtraList (Movie)
77
Lingo Programming Βασικές εντολές Window - Method close() moveToBack() forget() (Window) moveToFront() maximize() open() (Window) mergeProps() restore() minimize()
78
Lingo Programming Βασικές εντολές Window -Property appearanceOptions Resizable bgColor (Window) sizeState dockingEnabled sourceRect drawRect title (Window) fileName (Window) titlebarOptions image (Window) type (Window) Movie Visible Name windowBehind picture (Window) windowInFront rect (Window)
79
Lingo Programming Βασικές εντολές Fileio objFileio = new xtra("fileio") openFile() closeFile() readFile() createFile() readLine() delete() readToken() displayOpen() readWord() displaySave() setFilterMask() error() fileName() setFinderInfo() setNewLineConversion() getFinderInfo() setPosition() getLength() status() getOSDirectory() Version() getPosition() writeChar() writeReturn() readChar() writeString()
80
Παραδείγματα fileio fileioObjRef.openFile(stringFileName, intMode) 0—Read/write 1—Read-only 2—Writeable fileioObjRef.createFile(stringFileName) VarAsString=fileioObjRef.readFile() fileioObjRef.writeString(string)
81
Lingo Programming Βασικές εντολές Netlingo objNetLingo = new xtra("netlingo") browserName() netDone() cacheDocVerify() netError() cacheSize() netLastModDate() clearCache netMIME() downloadNetThing netStatus externalEvent() netTextResult() getLatestNetID postNetText getNetText() preloadNetThing() getStreamStatus() proxyServer gotoNetMovie tellStreamStatus() gotoNetPage URLEncode netAbort
82
Παραδείγματα netLingo gotoNetMovie http://www.yourserver.com/movies/movie1.dcrhttp://www.yourserver.com/movies/movie1.dcr on mouseUp goToNetPage "Todays_News.html", "_new" End
83
Lingo Programming 3D x z y [x,y,z]=[x1,y1,z1]+[x2,y2,z2] On enterframe Member(“3Dworldmember”).model(“car”).translate(x,y,z, σύστημα αναφοράς) end Xobj,Yobj,Zobj Υπάρχουν συστήματα αναφοράς όσα και τα μοντέλα και ένα σύστημα του κόσμου Έχει σημασία κάθε φορά να διαλέγουμε το κατάλληλο σύστημα αναφοράς
84
Lingo Programming 3D member(whichCastmember).node(whichNode).rotate(xAngle, yAngle, \ zAngle {, relativeTo}) member(whichCastmember).node(whichNode).rotate(rotationVector \ {, relativeTo}) member(whichCastmember).node(whichNode).rotate(position, axis, \ angle {, relativeTo}) xAngle Required if applying a rotation using x-, y-, and z-axes. Specifies the angle of rotation about the x-axis. yAngle Required if applying a rotation using x-, y-, and z-axes. Specifies the angle of rotation about the y-axis. zAngle Required if applying a rotation using x-, y-, and z-axes. Specifies the angle of rotation about the z-axis.rotation Vector Required if applying a rotation using a vector. Specifies the vector that contains the angles to apply. position Required if applying a rotation about an arbitrary axis passing through a point in space. Specifies position in space. axis Required if applying a rotation about an arbitrary axis passing through a point in space. Specifies the axis passing through the specified position.
85
angle Required if applying a rotation about an arbitrary axis passing through a point in space. Specifies the amount of rotation about the axis axis. relativeTo Optional. Specifies which coordinate system axes are used to apply the desired rotational changes. The relativeTo parameter can have any of the following values: #self applies the increments relative to the node’s local coordinate system (the X, Y and Z axes specified for the model during authoring). This value is used as the default if you use the rotate command with a node reference and the relativeTo parameter is not specified. #parent applies the increments relative to the node’s parent’s coordinate system. This value is used as the default if you use the rotate command with a transform reference and the relativeTo parameter is not specified. #world applies the increments relative to the world coordinate system. If a model’s parent is the world, than this is equivalent to using #parent. nodeReference allows you to specify a node to base your rotation upon, the command applies the increments relative to the coordinate system of the specified node. Lingo Programming 3D
86
member("Scene").model("Moon").rotate(0,0,15) member("Scene").model("Moon").rotate(vector(0, 0, 5), member("Scene").model(“Earth")) polePos = member("3d Scene").model("Pole").worldPosition member("3d Scene").model("Ball").rotate(polePos, vector(0,0,1), \ 5, #world) Lingo Programming 3D
87
member("Scene").model(“model2").rotate(vector(180, 0, 0), member("Scene").model(“model1")) model1 model2 model1 model2
88
member(whichCastmember).node(whichNode).scale(xScale, yScale, zScale) member(whichCastmember).node(whichNode).scale(uniformScale) Xscale=1,9 Yscale=1,9 Zscale=1,5 Lingo Programming 3D
89
member(whichCastmember).registerForEvent(eventName, handlerName, scriptObject {, begin, period, repetitions}) eventName: #collideAny #collideWith is a collision event involving this specific model. The setCollisionCallback() command is a shortcut for using the registerScript() command for the #collideWith event. #animationStarted and #animationEnded are notification events that occur when a bones or keyframe animation starts or stops playing. The handler will receive three arguments: eventName, motion, and time. The eventName argument is either #animationStarted or #animationEnded. The motion argument is the name of the motion that has started or stopped playing, and time is the current time of the motion. #timeMS is a time event. The first #timeMS event occurs when the number of milliseconds specified in the begin parameter have elapsed after registerForEvent is called. The period parameter determines the number of milliseconds between #timeMS events when the value of repetitions is greater then 0. If repetitions is 0, the #timeMS event occurs indefinitely. scriptObject Required: Specifies the script object that contains the handler handlerName. If 0 is specified for scriptObject, then the first event handler with the given name found in a movie script is called.
90
Lingo Programming 3D member(whichCastmember).model(whichModel).collision.collisionModifierProperty enabled (collision) indicates whether collisions with the model are detected. resolve indicates whether collisions with the model are resolved. immovable indicates whether a model can be moved from frame to frame. mode (collision) indicates the geometry used for collision detection. The collision modifier generates the following events. For more information about using collision events, see the registerForEvent() entry. A #collideAny event is generated when a collision occurs between models to which the collision modifier has been attached. A #collideWith event is generated when a collision occurs with a specific model to which the collision modifier has been attached.
91
Lingo Programming 3D repeat with curModel in [ "chassis","sphere01", "sphere02", "sphere03", "sphere04", \ "sphere05", \ "sphere06", "sphere07", "sphere08"] member("rally4w").model(curModel).addModifier(#collision) member("rally4w").model(curModel).collision.mode = #mesh member("rally4w").model(curModel).collision.enabled = true member("rally4w").model(curModel).collision.resolve = true member("rally4w").model(curModel).collision.immovable = false end repeat member("rally4w").registerForEvent(#collideAny,#collisionDetect,0) End
92
Lingo Programming 3D on collisionDetect me, collisiondata speedvalue=0 music = sound(2) music.play(member("caroops")) put collisionData.modelA put collisionData.modelB put collisionData.pointOfContact put collisionData.collisionNormal end -- model("Sphere04") -- model("Chassis") -- vector( -94.7872, -3.07750e3, 20.7495 ) -- vector( -0.9895, -0.1440, 0.0108 )
93
Lingo Programming 3D Change the camera on changethecamerav sprite(1).camera = member("rallycarhavok").camera("camera02") End Degradation of lights member("rallycarhavok").light("omni01").attenuation =vector(1000,0,0) Create new camera member("rallycarhavok").camera("DefaultView").clone("FlightCam")
94
Lingo Programming 3D Όποιοι έχετε βάλει αντικείμενα για bonus τα οποία τα περιστρέφεται με κώδικα στο behavior και το κάνετε remove στο ή αλλού movie script τότε στον κώδικα περιστροφής μπορεί να σας δημιουργεί πρόβλημα με error γιατί πάτε να περιστρέψετε ένα αντικείμενο που μόλις είχατε σβήσει. Για να μην έχετε τέτοιο πρόβλημα θα πρέπει Στον κώδικα περιστροφής να χρησιμοποιήσετε την μέθοδο isInWorld() αυτή η method γυρίζει true kai false Πχ. if member("helic").model("apple01").isinworld() then member("helic").model("apple01").rotate (0,0,12,#self) end if
95
Havok wheels Οι ρόδες του αυτοκινήτου θα μείνουν εκτός Havok και θα προγραμματίζω σαν να είναι εξαρτημένα μοντέλα από το σασί. member("rallycarhavok").model("chassis").addChild(member("rallycarhavok").model("backw heels")) member("rallycarhavok").model("chassis").addChild(member("rallycarhavok").model("fr ontlwheel")) member("rallycarhavok").model("chassis").addChild(member("rallycarhavok").model("fr ontrwheel"))
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.