Flash MP3 loop Player

^^ ... da sagte ich doch schon "... zweiten Offset (/1000)" - und vergesse es dann im Quelltext. Asche auf mein Haupt!

Na, jedenfalls gut, dass Du den Fehler auch selbst gefunden hast. :)

Gruß

P.S.: ausserdem habe ich in der Eile einige Klammern vergessen zu schließen; Posting ist nun korrigiert.
.
 
Hallo,
ich hab das ganze auch mal ausprobiert.

Bei mir stellt sich nun das Problem dass der erste loop, ein wenig versetzt, gleich zweimal startet, sodass 2 sounds sich überlagern. Konnt bisher noch nicht rausfinden warum das so ist. Gibt ja entweder nur starten beim öffnen oder nicht.

mfg
ikon
 
Hallo,

1. wieso gräbst du dazu extra einen Thread aus?
2. bitte poste doch mal den Code oder die fla - hellsehen können wir auch nicht.

Gruß
jens
 
Hi,
ich habe keinen neuen thread geöffnet weil es erstens gerade mal 4 Monate her ist und es ja nur eine kleine Frage am Rande des Themas ist.

Die fla oder das Skript zu posten halt ich für unnötig wenn ich es von Datic 1:1 übernommen habe und die fla als download bereits in diesem Thread geposted wurden.

Vielleicht hätte ich es einfach per PN direkt an Datic richten sollen...

Tut mir Leid, beim nächsten Mal richte ich meine Fragen wie erwähnt an die Person selbst oder öffne einen neuen Thread.

mfg
ikon
 
Tut mir Leid, beim nächsten Mal richte ich meine Fragen wie erwähnt an die Person selbst oder öffne einen neuen Thread.
Nee, mach das bitte nicht! ;) Lieber etwas an einen nicht allzu alten (4 Monate) Thread anhängen, wenn es zum Thema passt, als privat anfragen.

Grund: Wenn sich in einem geposteten Script Fehler stecken, bringt es der Community mehr, wenn diese Infos (und die ggf. Lösung) im Forum gepostet werden.

@Topic: Bei mir funktioniert der Player. Hast Du das Problem direkt mit der von mit geposteten Datei, oder mit einer 1:1 nachgebauten Version?

Gruß
.
 
Zuletzt bearbeitet:
@Datic: wenn das jeder so machen würde könntest Du Dich wohl kaum vor PNs retten, oder aber die server von tuts.de würden bald überlasten wegen überflüssigen neuen Threads mit immer denselben dummen Fragen

Da ich eigentlich nur das Skript durchgehen wollte um das ganze zu verstehen, hab ich einfach erstmal Deine Datei genommen und lediglich den Pfad für die xml Playlist von "list.xml" auf "playlist.xml" geändert um Titel von meiner Festplatte in der geänderten .xml Date aufzurufen. Gleich beim ersten Test kam der bereits vorher genannte Fehler, woraufhin ich dann meine Frage geposted habe.

geänderte .xml Datei:
PHP:
<song src="BeatMELANCON_bad dream84.mp3" info="MELANCON - bad dream" />
<song src="BeatMELANCON_Napoli62.mp3" info="MELANCON - Napoli" />
<song src="BeatMELANCON_the devil cry62.mp3" info="MELANCON - the devil cry" />
<song src="BeatSTYX_Sleeper86.mp3" info="STYX - Sleepers" />
<song src="BeatSTYX_the hole90.mp3" info="STYX - the hole" />

Und nochmal das Skript an dem ich tatsächlich nichts ausser den Pfad für den xm.load geändert habe, es sei denn ausversehen...:
PHP:
but1.sym = "play";
but2.sym = "stop";
but3.sym = "rew";
but4.sym = "ffwd";
var song = new Array();
var loaded = 0;
var amt = 0;
var current = 0;
var isplaying = true;
// true = Automatisch starten, false = nicht starten!
var xm = new XML();
xm.ignoreWhite = true;
xm.onLoad = function() {
	parse(this);
};
xm.load("playlist.xml");
function parse(obj) {
	amt = obj.childNodes.length;
	for (var i = 0; i<obj.childNodes.length; i++) {
		song[i] = ct.createEmptyMovieClip("song"+i, i);
		song[i].src = obj.childNodes[i].attributes.src;
		song[i].title = obj.childNodes[i].attributes.title;
		song[i].snd = new Sound(song[i]);
		song[i].snd.onSoundComplete = function() {
			if (isplaying) {
				this.start();
			}
		};
		song[i].snd.onLoad = function() {
			nextOne();
		};
		song[i].snd.loadSound(song[i].src, false);
	}
}
function nextOne() {
	loaded++;
	display.text = "loaded "+loaded+" von "+amt;
	if (loaded>=song.length) {
		init(0);
	}
}
function init(n) {
	display.text = (n+1)+" von "+song.length+": "+song[n].title;
	if (isplaying) {
		playSound();
	}
}
function playSound() {
	isplaying = true;
	song[current].snd.start();
}
function stopSound() {
	isplaying = false;
	song[current].snd.stop();
}
function switchSound(d) {
	song[current].snd.stop();
	current += d;
	if (current<0) {
		current = song.length-1;
	}
	if (current>song.length-1) {
		current = 0;
	}
	init(current);
}


mfg und Danke
ikon
 
Hi,

ich habe die Datei noch einmal heruntergeladen und mit mehreren Sounddateien (alle mehrere MB groß) getestet. Dabei bin ich auf eine Möglichkeit gestoßen, diesen Fehler auszulösen:

Nachdem alle Sounds geladen wurden, wird der erste in der Liste abgespielt. Wenn Du während des Ladevorgangs (sprich: wenn zwar der erste, aber noch nicht alle Sounds geladen sind) den Play-Button betätigst, wird die Funktion "playSound" aufgerufen, die den aktuellen Song abspielt. Ist der Ladevorgang beendet, wird diese Funktion dann natürlich noch einmal aufgerufen, was dazu führt, dass der aktuelle Sound zweimal (versetzt) zu hören ist.

Um das zu vermeidn kannst Du über die Variable "isplaying" feststellen, ob schon ein Sound läuft. Zum automatischen Starten brauchst Du dann noch eine weitere Variable (willplay) und ein paar kleinere Änderungen am Script:
PHP:
function parse(obj) {
	amt = obj.childNodes.length;
	for (var i = 0; i<obj.childNodes.length; i++) {
		song[i] = ct.createEmptyMovieClip("song"+i, i);
		song[i].src = obj.childNodes[i].attributes.src;
		song[i].title = obj.childNodes[i].attributes.title;
		song[i].snd = new Sound(song[i]);
		song[i].snd.onSoundComplete = function() {
			if (isplaying) {
				this.start();
			}
		};
		song[i].snd.onLoad = function() {
			nextOne();
		};
		song[i].snd.loadSound(song[i].src, false);
	}
}
function nextOne() {
	loaded++;
	display.text = "loaded "+loaded+" von "+amt;
	if (loaded>=song.length) {
		init(0);
	}
}
function init(n) {
	display.text = (n+1)+" von "+song.length+": "+song[n].title;
	if (willplay) {
		playSound();
	}
}
function playSound() {
	if (!isplaying) {
		isplaying = true;
		song[current].snd.start();
	}
}
function stopSound() {
	isplaying = false;
	willplay = false;
	song[current].snd.stop();
}
function switchSound(d) {
	song[current].snd.stop();
	isplaying = false;
	current += d;
	if (current<0) {
		current = song.length-1;
	}
	if (current>song.length-1) {
		current = 0;
	}
	init(current);
}

Gruß

P.S. @PN: Stimmt; ich bekomme schon genug Anfragen per PN, bei denen ich in den meisten Fällen auch ans Forum verweise. ;)
.
 
Zuletzt bearbeitet:
Hey,
danke für die schnelle Antwort.
Ich werd das mal durchgehen und wenn ichs verstanden hab kann ich den Thread hier auch endlich Ruhen lassen ;)
Was mich dennoch stutzig macht, dass ich den "play" button gar nicht betätigt habe, das ganze ging ganz von allein los...
 
Nabend,
funktioniert, ich musste nur die Abfragen für die init und play Funktion minimal korrigieren.

PHP:
if (willplay == true) {

PHP:
if (isplaying == false) {

Danke Datic,
ikon

//edit: jetzt weiss ich warum man solche alten Threads nicht wieder aufbacken sollte, kann den nicht abhaken weil er nicht von mir ist, aber meinerseits ist das Thema erledigt.
Wäre nett wenn sich einer der Admins darüm kümmern könnte den Thread zu schliessen, bzw abzuhaken.
 
Zuletzt bearbeitet:
;) @Erledigt: Stimmt auch irgendwie. Dennoch ist das manchmal sinnvoller, als zu dem selben Thema einen neuen Thread zu erstellen.

@Änderungen: Welche Flash-Version verwendest Du? "if(willplay)" bzw. "if(!willplay)" (bedeutet syntaktisch das selbe wie Deine Änderungen) sollte zumindest mit MX auch funktionieren.

Gruß
.
 

Neue Beiträge

Zurück