webForumDet fria alternativet

Byta spår när det spelats klart?

Flash

21 svar · 1 125 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#1

Hej!

Jag har fixat en flashspelare för musik som funkar ypperligt sånär på en grej.
Den har play, paus, stop, spår-fram och spår-bak. Allt det funkar. Men det som saknas är att få in så att den byter till nästa spår automatiskt när föregående slutat.

Jag är ingen haj på AS så jag vet egentligen inte hur min spelare funkar, men det här är koden för de olika kontrollerna. Hur ska jag gå till väga för att få in att nästa spår ska komma automatiskt? Behövs mer kod för att det ska gå att förstå hur det är uppbyggt?

function [b]playSong()[/b]:Void {

s = new Sound();
if (cps == _root.xmlClass.sa.length-1) {
cps = 0;
s.loadSound(_root.xmlClass.sa[cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

} else {

s.loadSound(_root.xmlClass.sa[++cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

}

}

function prevSong():Void {

s = new Sound();
if (!(cps == 0)) {
cps = cps-1;
s.loadSound(_root.xmlClass.sa[cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

} else {

cps == _root.xmlClass.sa.length-1;
s.loadSound(_root.xmlClass.sa[cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

}

}

function pauseIt():Void {

pos = s.position;
s.stop();

}

function unPauseIt():Void {

s.start(pos/1000);

}

}

Tackar! :)

Medlem sedan dec. 20002 526 inlägg
#2

det du får göra är att ha en "onEnterFrame" eller "Interval" som kollar om positionen på spåret som spelas är = den totala tiden på spåret, om ja, så starta nästa :)

Kolla Sound-classen i hjälpen inne i flash så ser du hur du kan få ut rätt information!

Medlem sedan okt. 2004186 inlägg
#3

Tror att detta borde fungera, anropar funktionen nextSong när spåret spelat klart

function playSong():Void {

s = new Sound();
if (cps == _root.xmlClass.sa.length-1) {
cps = 0;
s.loadSound(_root.xmlClass.sa[cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

} else {

s.loadSound(_root.xmlClass.sa[++cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

}
s.onSoundComplete = function() {
		nextSong();
	}
}
Medlem sedan nov. 20016 480 inlägg
#4

crisse6 skrev:

det du får göra är att ha en "onEnterFrame" eller "Interval" som kollar om positionen på spåret som spelas är = den totala tiden på spåret, om ja, så starta nästa :)

hur gör man det? ska det läggas inom play/prev eller sist bara en gång efter all annan kod?

det andra exemplet funkade inte. testade lite olika sätt utan resultat. nextsong finns för övrigt inte. den går väl via playsong för att byta spår framåt och unpaus för playfunktionen.

Medlem sedan dec. 20002 526 inlägg
#5

det blir en funktion du kör efter att du initierat ljudet, dvs när du kallat på "loadSound".

kan ge exmpel imonr!

Medlem sedan nov. 20016 480 inlägg
#6

crisse6 skrev:

det blir en funktion du kör efter att du initierat ljudet, dvs när du kallat på "loadSound".

kan ge exmpel imonr!

okej, tack. det vore burrigt.

jag har testat nåt åt det här hållet och det funkade inte...

function playSong():Void {

s = new Sound();
if (cps == _root.xmlClass.sa.length-1) {
cps = 0;
s.loadSound(_root.xmlClass.sa[cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

} else {

s.loadSound(_root.xmlClass.sa[++cps], true);
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];

}

s.onSoundComplete = function() {
s.loadSound(_root.xmlClass.sa[++cps], true);						
_root.clip1.clip2.clip3.tracktext.display_txt.text = _root.xmlClass.names[cps];
}

}
Medlem sedan dec. 20002 526 inlägg
#7

bifogar här ett exempel på hur du skulle kunna göra. En "onEnterFrame" som ligger å kikar tiden på låten just nu, och jämför mot den totala tiden, om dom stämmer överens med varann, så hoppa till nästa låt i arrayen med låtar.

cool?

du får ju ändra "loadSound"-funktionen så den laddar från din xml, och ja, "currentIndex" i mitt exmepel är ju såklart din "cps"!

(ps. song1.mp3, och song2.mp3 får du lägga in i samma mapp som du zippar upp exemplet)

Medlem sedan okt. 20071 082 inlägg
#8

har du gjort en egen mediaspelare?!?!?!

Medlem sedan dec. 20002 526 inlägg
#9

vad snackar du om?

Medlem sedan nov. 20016 480 inlägg
#10

hm, tack för svaret, har kikat en del på ditt exempel men för en oinvigd så var det inte det lättaste =/

du skulle inte kunna försöka implementera den här onenter-frame-saken i min kod lite snabbt? :)

tack för hjälpen hur som helst

Medlem sedan juni 2006244 inlägg
#11

Bäst att bli invigd då om du ska göra en sån här grej i Flash, eller låt någon annan göra det kanske... :bire

Medlem sedan okt. 20071 082 inlägg
#12

crisse6 skrev:

vad snackar du om?

påstade i fel tråd

Medlem sedan dec. 20002 526 inlägg
#13

okej, alltså det som skiljer nu är sökväg till låtarna, men har kommenterat var du bör ändra det.

okaj?

red. skicka annars upp dina filer, lättare om man har allt i ett. annars får du försöka fixa genom att kolla på mitt exempel om det inte redan gör det du vill..

Medlem sedan nov. 20016 480 inlägg
#14

Tack för svaret. Jag är väl seg eller nåt, men det känns avigt att lägga in min kodsnutt i den nya än tvärt om. Eftersom allt funkar väldigt bra och det bara är den här lilla funktionen som gör att nästa spår kommer automatiskt som saknas.

Jag bifogar hur som helst mina filer och blir jätteglad om någon orkar kolla på det :)

Tack!

Kodsnuttar inifrån flashfilen (samt två bifogade AS-filer):

var xmlClass = new Xmlload();
var playClass = new Player();
stop();

[...]

this.pause_btn.onRelease = function() {
   _root.playClass.pauseIt();
};
this.play_btn.onRelease = function() {
   _root.playClass.unPauseIt();
};
this.next_btn.onRelease = function() {
   _root.playClass.playSong();
};
this.prev_btn.onRelease = function() {
    _root.playClass.prevSong();
};

[...]

this.tracktext.display_txt.text = _root.xmlClass.names[0];
stop();
Medlem sedan dec. 20002 526 inlägg
#15

Okej. Du får gärna skicka med alla filer, även xml.
Känns som du gett upp rätt tidigt, med tanke på att jag byggde i princip likadant och förklarat vad skillnaden var - sökvägen. Men okej, skicka upp alla filerna så kan jag kolla.

Medlem sedan nov. 20016 480 inlägg
#16

Sorry, jag testade verkligen i 1 timme. Svårt att läsa grekiska om man inte kan det och inte har en ordlista. Vill lära mig AS, men har inte tiden just nu tyvärr :(

xml:en innehåller bara detta:

<?xml version='1.0' encoding='utf-8'?>
<songs>
<song url="song1.mp3" name="Song 1" />
<song url="song2.mp3" name="Song 2" />
</songs>

swf:en innehåller i princip det jag skickade i förra inlägget. sen är det inga fler filer...

Tack för all hjälp!
Jag vet att det är värdelöst att hjälpa någon som inte fattar nåt, men jag uppskattar det du gör :)

Medlem sedan juni 2006244 inlägg
#17

bassebhu skrev:

Tack för all hjälp!
Jag vet att det är värdelöst att hjälpa någon som inte fattar nåt, men jag uppskattar det du gör :)

Förmodligen är det även lite värdelöst att hjälpa någon som inte skickar de filer man behöver för att hjälpa personen...
:stud :bire

Medlem sedan nov. 20016 480 inlägg
#18

doridori skrev:

Förmodligen är det även lite värdelöst att hjälpa någon som inte skickar de filer man behöver för att hjälpa personen...
:stud :bire

okej, sorry sorry, men nu fanns ju allt här ;)

Medlem sedan nov. 20016 480 inlägg
#19

Jag har försökt i flera timmar att få det att funka, men det går inte. Den versionen som jag fick här funkar när jag kör den för sig själv, men då saknas funktionen för att ladda in spårnamn samt skilda play/paus-knappar (sista spelar visserligen ingen större roll).

Jag förstår vad du menar med att lägga in min xml i stället i din kod och sedan köra den, men det vill sig inte bara. Dessutom så sparar sig massa saker i cachen så jag är hela tiden osäker på om ändringarna har trätt i kraft eller inte.Det verkar ibland som att gamla inställningar ligger kvar trots att jag har återställt hela webbläsaren.

:(

Jag är oerhört tacksam för hjälp med hur jag ska kunna kombinera de här funktionerna!

Medlem sedan nov. 20016 480 inlägg
#20

Någon? :)

431 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
122 ms — hämta statistik (db)
140 ms — hämta tråd, inlägg och bilagor (db)
165 ms — ändringar (db)