Ujhelyi László
unread,Jun 12, 2011, 10:33:58 AM6/12/11Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to szamalk2010webprog
Segítség az mp3 lejátszó flash beadandóhoz:
1. váltás a zeneszámok között:
A zenék tárolása "zeneszamok" tömbben.
var zeneszamok:Array = new Array("1.mp3", "2.mp3", "3.mp3", "4.mp3");
elem = 0;
hang.loadSound(zeneszamok[elem],false); // betölti az első számot, de
nem indul automatikusan(!)
Az "elem" változóval adjuk meg, hogy a tömb hanyadik eleméről van szó.
Figyelni kell rá, hogy az "elem" értéke ne legyen nullánál kisebb és a
tömb hosszánál kisebb legyen.
Gombok lenyomásához lehet kötni a zeneszámok közti váltást.
kovetkezo_btn.onRelease = function() {
// Következő zeneszám betöltésea listából
if (elem<zeneszamok.length) {
hang.stop(); // Aktuális zene leállítása
elem++;
hang.loadSound(zeneszamok[elem],false);
pozicio = 0;
}
};
elozo_btn.onRelease = function() {
// Előző zeneszám betöltése a listából
if (elem>0) {
hang.stop();
elem--;
hang.loadSound(zeneszamok[elem],false);
pozicio = 0;
}
};
--------------------------------------------------------------------------
2. Hangerő beállítása:
hangero=hang.getVolume(); // hangerő értékének lekérdezése
hang.setVolume(hangero); // a hangerő értékének beállítása
Figyelni kell, rá, ha a "hangero" változó egyre kisebb negatív értéket
vesz fel, egyre hangosabban fog szólni. Ezért célszerű a hangerő
minimumának nullát adni, és célszerű a hangerő maximális értékét is
megadni, ami fölé nem mehet. Zene betöltésekor a hangerő értéke 100!
A hangerő értéke legegyszerűbben egy szövegdobozban (Dynamic Text)
adható meg. A hangerő szabályozás legegyszerűbben két gomb
segítségével adható meg ("hangeronoveles" gomb, "hangerocsokkentes"
gomb). Hangerő változtatására 1-es, 2-es, 5-ös, 10-es, 20-as közöket
javaslok. Ekkor a nulla érték alá kivonásokkal nem tud jutni biztosan
a kivonásokkal a program(!)
hangeronoveles_btn.onRealease = function() {
if (hang.getVolume()<=300) {
hangero=hang.getVolume()+20;
hang.setVolume(hangero);
hangerosseg.text = hangero;
}
}
hangeroncsokkentes_btn.onRealease = function() {
if (hang.getVolume()>0) {
hangero=hang.getVolume()-20;
hang.setVolume(hangero);
hangerosseg.text = hangero;
}
}
-----------------------------------------------------------------------
3. Zene adatainak kiíratása, legyegyszerűbben egy/több szövegdobozba
(Dynamic Text) tehető meg. Amennyiben egy szövegdoboz használunk,
akkor a kiírandó adatokat össze kell fűznünk. A "\n" szolgál arra,
hogy összefűzés esetén az azt követő dolog új sorba kerüljön.
hang.onID3 = function() {
zeneadatai.text = "Előadó: "+hang.id3.artist+"\n"+" Album címe:
"+hang.id3.album+"\n"+" Szám címe: "+hang.id3.songname;
};
----------------------------------------------------------------------
4. A pillanatnyi idő és a teljes idő kiíratása.
A szám teljes idejének kiíratásához a "hang.duration" értékre van
szükség. Ez viszont akárhonnan nem érhető el a programban!!! Ezt az
értéket az "onLoad" eseménynél kell egy változóba tenni, és a változót
később már használni tudjuk. A millisecundumban megadott értéket
szeretnénk perc:secundum formában megjeleníteni. ezért először
másodpercbe kell átírni, azaz osztani kell 1000-rel. Majd meg kell
nézni, hogy az így kapott értékben hányszor van meg a 60, annyi perc
és 60-nal osztva mennyi a maradék, annyi másodperc. A "Math.floor"
lefelé kerekíti az értéket. Ha a "Math.round" -ot használnák, akkor az
30s-nál váltana ez utóbbi esetben a kerekítés szabályinak megfelelően
alakítja egésszé!!!
hang.onLoad = function() {
ido=Math.round(hang.duration/1000);
perc=Math.floor(idotartam/60);
masodperc=idotartam%60;
idotratam=perc+":"+masodperc;
}
hangerosseg.text = hang.getVolume(); // Hangerő kezdeti értékének
megjelenítése
};
Pillanatnyi idő kiszámítása hasonlóan történik, csak ahhoz a
"hang.position" értéket kell felhasználni. Megjelenítéshez megint csak
egy szövegdobozt (Dynamic Text) kell használni. Folyamatos
megjelenítéshez az "onEnter" eseményhez célszerű kapcsolni.
Szépséghibája, ha a másodperc vagy a perc egyjegyű, akkor a kijelzőn
egy számjegyjelenik meg nem a meg szokott 00:00/00:00 megjelenítésben.
Például: 4:3/5:8 (04:03/05:08 helyett).
Másik szépséghibája, ha lenyomjuk a stop gombot nem vált át 00:00 -ra,
hanem mint a pause-nál a legutolsó érték marad látható. Ennek oka az,
hogy amikor kiadjuk a hang.stop() utasítást, a zenét meállítja, de a
pozíció értéke marad a leállítás pillanatbeli. Természetesen ha
megnyomjuk a "play" gombot, akkor az elejéről indítja a lejátszást, és
az a kijelzőn is látzsani fog.
onEnterFrame = function () {
ido=Math.round(hang.position/1000);
perc=Math.floor(idotartam/60);
masodperc=idotartam%60;
idokijelzo.text=perc+":"+masodperc+"/"+idotartam;
}
---------------------------------------------------------------------
5.
Előre és visszatekerés kódja szintén az "onEnterFrame" eseményhez
kerül. A visszatekerés majdnem pontosan ugyanúgy történik, mint az
órán megoldott előre tekerés. A különbség annyi, hogy be kell vezetni
egy "hátra" logikai változót az "előre" logikai típusú változó
mintájára. És természetesen a pozició értékét csökkenteni kell. Kell
csinálni gombot a gyors előre/visszatekeréshez.
var előre:Boolean = false;
var hátra:Boolean = false;
onEnterFrame = function () {
// Idő megjelenítése
ido=Math.round(hang.position/1000);
perc=Math.floor(idotartam/60);
masodperc=idotartam%60;
idokijelzo.text=perc+":"+masodperc+"/"+idotartam;
// Gyors előretekerés
if (előre) {
pozicio = hang.position;
hang.stop();
pozicio += 600;
// A pozició értékének növelése 0,6 s-mal
hang.start(Math.round(pozicio/1000),1);
}
// Gyors visszatekerés
if (hátra) {
pozicio = hang.position;
hang.stop();
pozicio -= 600;
// A pozició értékének csökkentése 0,6 s-mal
hang.start(Math.round(pozicio/1000),1);
}
};
eloreteker_btn.onPress = function() {
előre = true;
};
eloreteker_btn.onRelease = function() {
előre = false;
};
hatrateker_btn.onPress = function() {
hátra = true;
};
hatrateker_btn.onRelease = function() {
hátra = false;
};
6. Indítás, leállítás, pauzálás:
play_btn.onRelease = function() {
hang.start(pozicio,1);
};
stop_btn.onRelease = function() {
hang.stop();
pozicio = 0;
};
pause_btn.onRelease = function() {
pozicio = Math.round(hang.position/1000);
hang.stop();
};
Megjegyzések:
További szépséghiba, ha többször lenyomjuk a "play" gombot a "stop"
lenyomása nélkül, akkor többször is elindítja a lejátszást, és
párhuzamosan szól időbeli csúszással többször a szám.
Másik szépséghibája, ha lenyomjuk a "stop" billentyűt, vagy zeneszámot
váltunk, és előtte használtuk a gyors előretekerést, akkor a "stop"
lenyomása előtti, vagy a váltás előtti pozícióról folytatja a gyors
tekerést és nem a szám elejétől.
A design-t és a szépséghibák kiküszöbölését rátok bízom. (Nekem már
néhányat sikerült.)
Remélem segítettem.
Ujhelyi László