Μουσική μέρος ντέφτερον...

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

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

Απάντηση
spookyb52
Δημοσιεύσεις: 1891
Εγγραφή: 23 Ιαν 2002 01:00
Τοποθεσία: Lost in the mansion
Επικοινωνία:

Μουσική μέρος ντέφτερον...

Δημοσίευση από spookyb52 » 01 Μαρ 2004 18:48

...και τελευταίο

Συνέχεια απο http://freestuff.gr/forums/viewtopic.ph ... 000e033235

Είπα να μή μαζευτούν και άλλα flash μαζί για να τα ανοίγετε ευκολότερα.

Άς αρχίσω..

1) Αρχικά θα φτιάξουμε μιά slidebar την οποία θα χρησιμοποιήσουμε για να δυναμώνουμε , χαμηλώνουμε την ένταση του ήχου

[ δώστε για αρχή τις ίδιες διαστάσεις με εμένα και στη συνέχεια αφού κατανοήσετε πως το έφτιαξα μπορείτε να κάνετε τις αλλαγές που θέλετε ]

θα φτιάξουμε αυτό :



Σχεδιάστε ένα ορθογώνιο(εγώ το έχω φτιάξει καμπυλωτό στις άκρες γιατί είμαι ανώτερος απο εσάς, τις μάζες...) , μικρών διαστάσεων, σχήμα (το δικό μου είναι 56px X 6px , width/height)
Eπιλέξτε το και πατήστε το F8
Μετατρέψτε το σε movie symbol
Δώστε του στα properties για instance name το mpara
Κάντε δεξί κλίκ και edit πάνω του (η διπλό κλίκ πάνω του)

Κλειδώστε το layer και δημιουργήστε ένα νέο layer (μπορείτε να τα ονομάσετε τα layers για να μήν χάνεστε, εγώ είμαι τσαπατσούλης και έτσι τα flashakia μου είναι λίγο χύμα)

Φτιάξτε ένα νέο Movie clip που θα χρησιμεύσει ώς button για να μετακινείτε η μπάρα. Εγώ έφτιαξα ένα λευκό (όπως είναι φανερό και στο παραπάνω flashaki) διαστάσεων 2,5 Χ 14,5 width/height

Δώστε του για instance ονομασία το slidebar

Τοποθετήστε το σε τετοιο σημείο ώστε να φαίνεται όπως στο flashaki που έφτιαξα πιό πάνω

Κάντε δεξί κλίκ και edit πάνω στο movie (η διπλό κλίκ πάνω του) και επιλέξτε το γραφικό που υπάρχει μεσα. Μετατρέψτε το σε button.

Βάλτε στα actions του button τα παρακάτω :

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

on (press) {
    _root.mpara.slidebar.startDrag(true, -22, 0, 22, 0);
}
on (release) {
    _root.mpara.slidebar.stopDrag();
}
Το παραπάνω σημαίνει ότι μπορούμε να σύρουμε με το mouse την slidebar και όταν την αφήσουμε η διαδικασία σταματάει και η slidebar μένει στην τελευταία θέση που επιλέξαμε

Η παρένθεση στην επόμενη εντολή : startDrag(true, -22, 0, 22, 0); σημαίνει :

true : Λοκάρει στο κέντρο το mouse
-22, 0, 22, 0 Οι αποστάσεις της slidebar απο το κέντρο του movie clip. (Απο το κέντρο του movie clip που είστε και όχι απο το main timeline του flash και τις άκρες του)

Οι αποστάσεις με τη σειρά έιναι Left, top, right, bottom Δείτε και την παρακάτω εικόνα για καλύτερα.

Εικόνα

Όλα αυτά τα νούμερα μπορείτε να τα αλλάξετε ανάλογα με το τί έχετε φτιάξει. Φυσικά θα πρέπει να αλλάξει ανάλογα και ό κώδικας παρακάτω σε μια τέτοια περίπτωση.

Επιστρέψτε πίσω στο timeline του movie

Τώρα έχουμε συνολικά ένα movie clip στο main timeline μέσα στο οποίο (movie clip) υπάρχουν δύο layers. Στο ένα υπάρχει απλά ένα ορθογώνιο γραφικό (το layer που κλειδώσαμε) και στο άλλο υπάρχει η slidebar (το slidebar clip μέσα στο οποίο φτιαξαμε ένα button)

Στο παράδειγμά μου η μπάρα μετακινείτε απο -22pixels έως +22pixels

Δηλαδή στο -22 η ένταση του ήχου θα πρέπει να είναι 0 και στο +22 θα είναι 100

Συνολικά απο το -22 έως το +22 υπάρχει απόσταση 44 pixels

Άρα έχουμε άν προσθέσουμε άλλα 22 σε κάθε σημείο : Στα 0 pixels (-22 σύν 22 που προσθέτουμε) ένταση = 0 και στα 44 (22 σύν 22 pixels που προσθέτουμε) ένταση = 100

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

Άν για παράδειγμα η μπάρα είναι στα 2 pixels τότε έχουμε :

[(22+2)*100]/44 το οποίο μας δίνει 54,54 δηλαδή σε αυτό το σημείο η ένταση του ήχου είναι 54,54%

Αυτό στην actionscript θα γραφτεί ώς

Math.ceil(((22+2)*100)/44);

H math χρησιμεύει για να βγεί σωστό το αποτέλεσμα. Υπάρχει εκτός της ceil και η floor, abs κτλ αλλά δέ θα πώ τίποτα για αυτές εδώ.

Φυσικα εμείς θα χρειαστεί να φτιάξουμε variables γιατί δέν έχουμε μια σταθερή πράξη

προσθέστε από ένα frame σε κάθε layer (απο τα δύο που υπάρχουν μέσα στο movie)

και σε ένα frame βάλτε το παρακάτω :

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

thesh = Math.floor(_root.mpara.slidebar._x);
telshmeio = (thesh+22)*100;
fvol = Math.ceil(telshmeio/44);
Το παρακάτω βήμα δέν είναι απαραίτητο (Ίσως θα ήταν καλύτερο να το παραλείψετε και να μήν μπερδευτείτε με επιπλέον κώδικα,. Κάντε αυτό που λέω μετά το πλαίσιο)
Πηγαίνετε τώρα στο main timeline και φτιάξτε ένα movie clip και βάλτε στα actions το παρακάτω :

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

onClipEvent (load) {
    _root.mpara.slidebar._x = 18;
}
Αυτό καθορίζει σε ποιό σημείο θα βρίσκεται η slidebar στην αρχή. Το συγκεκριμένο movie δέν μας χρειάζεται σε κάτι άλλο και μπορέιτε να το κάνετε στην άκρη για να μή φαίνεται
Μπορείτε εναλλακτικά απλά να την μετακινήσετε εκεί που θέλετε και να μήν βάλετε αυτό το movie με τον κώδικα

Στη συνέχεια βάζουμε έναν ήχο με attach sound στο πρώτο frame του main timeline όπως περιέγραψα εδώ : http://freestuff.gr/forums/viewtopic.ph ... 000e033235

Με βάση εκείνο το παράδειγμα έχουμε τον παρακάτω κώδικα :

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

heavy = new Sound();
heavy.attachSound("metal");
heavy.start(0, 1);
_root.mpara.slidebar.onEnterFrame = function() {
	heavy.setVolume(_root.mpara.fvol);
};
Το μόνο που αλλάζει είναι το setVolume που το παίρνουμε απο το variable με ονομασία fvol. Βάζουμε και την διαδρομή _root.mpara γιατί το fvol δέν το έχουμε θέσει σαν global variable και θα πρέπει να πούμε στον κώδικα σε ποιό timeline βρίσκεται.

Δείτε και το παράδειγμα απο κάτω (όχι ίδιο ακριβώς με αυτό που περιέγραψα πιό πάνω, ό ήχος ξεκινάει με button εδώ) [ 246kb ]



The end έκτός άν βρώ bug και επιστρέψω...
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

Απάντηση

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

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

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