Hallo,
also ich kann beim Einbinden keinen fehler sehen, kannst du mal den Link posten ?
Hallo,
also ich habe einen Loop Player, der, wenn ich ihn in Flash teste, wunderbar funktioniert, aber sobald ich ihn auf einer HTML-Seite einbette, im Browser nicht mehr tut, d.h. die Sounds werden nicht abgespielt (nur in Opera funktioniert es, FF / IE7 nicht). Version ist Flash MX 2004. Zu irgendeinem Zeitpunkt hatte ich den Loop Player als Flash 6 File exportiert und da ging es auch in IE7, aber nicht in Firefox.
So bette ich ihn ein:
Die abzuspielenden Sounds sind kleine MP3-Loops, die über ein XML-File reingeladen werden, und wie gesagt, im Flash Player an sich geht's, hat also nichts mit falschen Pfaden o. Ä. zu tun.Code:<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="176" height="50" id="loops" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="loops.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="loops.swf" quality="high" bgcolor="#ffffff" width="176" height="50" name="loops" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object>
Hat vielleicht jemand dazu eine Idee?
//update: Oh welch Peinlichkeit, im IE7 war aus irgendeinem Grund noch Flash Player 6 installiert, nach Update auf Flash Player 9 geht es dort nun. Bleibt noch FF, der sich immer noch sträubt, die Sounds abzuspielen.
Grüße, AnnaStesia
Geändert von AnnaStesia (23.07.2008 um 15:49 Uhr)
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Hallo,
also ich kann beim Einbinden keinen fehler sehen, kannst du mal den Link posten ?
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hallo Wanderratte,
hmmm, ich habe in FF das Flash Plugin neu installiert, und siehe da... Problem behoben, Sorry für die Störung.
Aber wo ich Dich gerade dran habe...
Jetzt habe ich nur noch das Problem, dass die Musik nicht richtig loopt, und meine Google Recherchen deuten darauf hin, dass dies an den externen MP3-Files liegt (lustigerweise kann selbst WinAmp die MP3-Dateien nicht sauber loopen, die entsprechenden .wavs schon, scheint also wirklich am Format zu liegen). Kann man das irgendwie lösen? Einfach die .wavs reinzuladen, scheint nicht zu gehen, wäre auch Ladezeittechnisch nicht die optimalste Lösung... Also meine Frage, gibt es irgendeinen "Kniff", Flash das saubere Loopen externer MP3-Files beizubringen?
Danke & Gruß, AnnaStesia
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Hallo nochmal,
also nach intensivem Googlen bin ich zu der Gewissheit gelangt, dass das mit dem sauberen Loopen nicht gehen wird. Aaaaaber eine kleine Annäherung, sprich, den Loop ein klein wenig später beginnen und etwas früher enden zu lassen, das wär auch schon eine Hilfe.
Hier mal mein Code:
Im fett markierten Bereich liegt der Hase begraben, das später beginnen ist ja kein Problem, aber das früher aufhören schon. Anstatt onSoundComplete könnte man die position Eigenschaft des Sounds auslesen und sobald duration Eigenschaft - Betrag x erreicht ist, das start() auslösen. Wäre so meine Idee, nur wie mache ich das?Code:var song = new Array(); var loaded = 0; var amt = 0; var current = 0; var isplaying = false; var xm = new XML(); xm.ignoreWhite = true; xm.load("sound-loops/list.xml"); xm.onLoad = function(success) { if(success) { parse(this); } } function parse(obj) { amt = obj.childNodes.length; for (var i=0; i<obj.childNodes.length; i++) { song[i] = this.createEmptyMovieClip("song" + i, this.getNextHighestDepth()); 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); }
Grüße, AnnaStesia
Ich weiss es doch auch nicht.
» www.sightdesign.de «
*ups*
darum wollte ich mich doch gestern noch kümmern *ascheübermeinhaupt*
Ich setze mich morgen dran, weißt du wie lang die mp3 ist bzw. nach wivielen sek er zum Anfang wieder springen muss ?
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Nur keine HektikNein, ich weiss nicht, wie lang das MP3 ist, der Grund, warum ich das gerne als ext. Files haben will, ist ja gerade, damit ich das ändern kann, ohne das Flash anzufassen. Es gibt aber die Eigenschaft "duration", damit müsste sich imho was anstellen lassen.
Habe übrigens nur Flash MX 2004.
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Hallo,
mit duration liest du die aktuell abgespielte Zeit aus.
Bei mp3s sind die Metatags leider erst am Ende verfügbar, deswegen fragte ich nach der eventuellen Spielzeit.
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hallo,
so Theoretisch müsste es so gehen.
sollte es nicht gehen, gibst du mir bitte deine fla, samt xml.PHP-Code:var xm = new XML();
var loopTimer = 0;
//Achtung geht erst nach dem ersten Durchlauf von jedem Song !!!
//hier gibst du in Millisekunden an, wann der Sound vor dem Ende aufhören soll und wieder neu beginnt.
var loopEnde = 1000;
//hier gibst du in Sekunden an, wann der Sound beginnen soll.
var startSound = 1;
//---------------------------------------------
xm.ignoreWhite = true;
xm.load("sound-loops/list.xml");
xm.onLoad = function(success) {
if (success) {
parse(this);
}
};
function parse(obj) {
amt = obj.childNodes.length;
for (var i = 0; i<obj.childNodes.length; i++) {
song[i] = this.createEmptyMovieClip("song"+i, this.getNextHighestDepth());
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) {
loopTimer = this.duration;
//hier bestimmst du wann, wo der Sound beginnen soll in Sekunden.
this.start(startSound);
controller(this);
}
};
song[i].snd.onLoad = function() {
nextOne();
};
song[i].snd.loadSound(song[i].src,false);
}
}
function controller(soObj) {
var obj = _root.createEmptyMovieClip("loop_controler",100000);
obj.onEnterFrame = function() {
if (loopTimer>0 && loopTimer-loopEnde>=soObj.duration) {
this.start(startSound);
}
};
}
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() {
loopTimer = 0;
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);
}
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hallo Ralf,
anbei die gewünschte Lieferung
Bei loopEnde kann ich eingeben, was ich will, es tut sich nix, was meiner Meinung daran liegt, dass die controller Funktion erst bei onSoundComplete aufgerufen wird, wo's ja schon zu spät ist, und ich weiss nicht, wie man den controller vorher zum Tüddeln bringen kann (optimalerweise bei playSound(), der ganze Funktionsaufruf bei onSoundComplete sollte ja eigentlich obsolet werden und der controller das Loopen übernehmen).
Vielen Dank schon mal bis hierher! Liebe Grüße, Christine
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Ok., kaum schrub ich's, kam mir die Erleuchtung, also so tüddelt's jetzt wunderbar, nochmals Danke, mir fehlte ja hauptsächlich das Basiswissen, wie ich so einen Controller mitrattern lasse, und da hast Du mich eindeutig auf den richtigen Trichter gebracht:
Code:var xm = new XML(); //Achtung geht erst nach dem ersten Durchlauf von jedem Song !!! //hier gibst du in Millisekunden an, wann der Sound vor dem Ende aufhören soll und wieder neu beginnt. var loopEnde = 60; //hier gibst du in Sekunden an, wann der Sound beginnen soll. var startSound = 0.025; //--------------------------------------------- xm.ignoreWhite = true; xm.load("list.xml"); xm.onLoad = function(success) { if (success) { parse(this); } }; function parse(obj) { amt = obj.childNodes.length; for (var i = 0; i<obj.childNodes.length; i++) { song[i] = this.createEmptyMovieClip("song"+i, this.getNextHighestDepth()); 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.onLoad = function() { nextOne(); }; song[i].snd.loadSound(song[i].src,false); } } function controller(soObj) { var obj = _root.createEmptyMovieClip("loop_controler",100000); obj.onEnterFrame = function() { var ende = soObj.duration-loopEnde; if (soObj.position >= ende) { stopSound(); playSound(); } }; } 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(startSound); controller(song[current].snd); } 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); }
Ich weiss es doch auch nicht.
» www.sightdesign.de «
Hallo,
na das kommt daher wenn man es selber nicht testet.
Aber du hast es hinbekommen und das ist das wichtigste.
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)