| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 8
| Musik Player Problem(Sound wird mehrfach abgespielt)
Hallo liebe Flash Community, ich sitze gerade daran, einen Musik Player zu basteln. Um folgende Funktionen geht es: Lied zurück(Button), Lied vor(Button) und Play/Pause(Button). Ich habe nur 1 großes Problem: Wenn man ein Lied abspielt und anschließend stoppt und dann zum nächsten Lied wechselt(Dieses Lied fängt automatisch an zu spielen) und dann den Play/Pause Button wieder drückt, dann stoppt das Lied nicht, sondern man hört das Lied 2x. Ich bin mit meinem Latein am Ende, ich hab schon versucht überall den SoundChannel zu stoppen, neues Soundobjekt zu erstellen es hat nichts geholfen. Google konnte mir leider auch nicht weiter helfen. Würde mich freuen wenn sich jemand meinem Problem annimmt .Hier der Code: Code: package {
import flash.display.MovieClip;
import flash.events.IOErrorEvent;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.utils.describeType;
import flash.net.URLLoader;
import flash.text.TextField;
import flash.media.Sound;
import flash.media.SoundChannel;
public class Player extends MovieClip {
var playlistLoader:URLLoader;
var songs:XMLList;
var songsTotal:Number;
var tracknameLabel:TextField;
var artistLabel:TextField;
var sound:Sound;
var channel:SoundChannel;
var currentSong:Number;
var btnForward:BtnForward;
var btnRewind:BtnRewind;
var btnPlay:BtnPlay;
var btnStop:BtnStop;
var btnSound:BtnSound;
var btnVolumeline: BtnVolumeline;
var volumeline:Volumeline;
var pausedSong:Boolean;
var songPosition:Number;
public function Player() {
playlistLoader = new URLLoader();
playlistLoader.load(new URLRequest("../media/xml/playlist.xml"));
playlistLoader.addEventListener(Event.COMPLETE, processXML);
artistLabel = new TextField();
tracknameLabel = new TextField();
artistLabel.y = 100;
artistLabel.width = 500;
tracknameLabel.width = 500;
tracknameLabel.y = 200;
channel = new SoundChannel();
pausedSong = false;
currentSong = 0;
songPosition = 0;
btnForward = new BtnForward();
btnForward.addEventListener(MouseEvent.CLICK, nextSong);
btnForward.x = 150;
btnForward.y = 30;
btnRewind = new BtnRewind();
btnRewind.addEventListener(MouseEvent.CLICK, prevSong);
btnRewind.x = 40;
btnRewind.y = 30;
btnPlay = new BtnPlay();
btnPlay.addEventListener(MouseEvent.CLICK, playPauseSong);
btnPlay.y = 45;
btnPlay.x = 110;
btnStop = new BtnStop();
btnStop.y = 30;
btnSound = new BtnSound();
btnSound.x = 190;
btnSound.y = 30;
btnVolumeline = new BtnVolumeline();
btnVolumeline.x = 230;
btnVolumeline.y = 33;
volumeline = new Volumeline();
volumeline.x = 235;
volumeline.y = 43;
addChild(btnForward);
addChild(btnRewind);
addChild(btnPlay);
addChild(btnStop);
addChild(btnSound);
addChild(volumeline);
addChild(btnVolumeline);
addChild(artistLabel);
addChild(tracknameLabel);
}
public function processXML(evt:Event):void{
var playlist:XML = new XML(evt.target.data);
songs = playlist.song;
songsTotal = songs.length();
playlistLoader.removeEventListener(Event.COMPLETE, processXML);
playlistLoader = null;
}
public function playSelectedSong(songNumber:Number):void{
var track = songs[songNumber].@trackname;
var artist = songs[songNumber].@artist;
var url = songs[songNumber].@url;
this.tracknameLabel.text = track;
this.artistLabel.text = artist;
if (channel){
channel.stop();
channel.removeEventListener(Event.SOUND_COMPLETE, playPauseSong);
}
sound = new Sound();
sound.load(new URLRequest(url));
channel = sound.play();
channel.addEventListener(Event.SOUND_COMPLETE, playPauseSong);
}
function nextSong(e:MouseEvent):void{
currentSong++;
if(currentSong >= songsTotal)
currentSong = 0;
playSelectedSong(currentSong);
}
function prevSong(e:MouseEvent):void{
currentSong--;
if(currentSong < 0)
currentSong = songsTotal-1;
playSelectedSong(currentSong);
}
function playPauseSong(evt:MouseEvent):void{
if(!pausedSong){
if(channel.position > 0){
channel = sound.play(songPosition);
}else{
playSelectedSong(currentSong);
}
}else{
songPosition = channel.position;
channel.stop();
}
pausedSong = !pausedSong;
}
}
} Geändert von norora (06-01-2012 um 19:00 Uhr) |
| | |
| | #2 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Hallo in Willkommen im Forum! Hast Du mal versucht, erst den Listener zu entfernen und dann erst den channel zu stoppen? Wenn ich das richtig sehe, startet der Listener z.Z. den Sound ja neu, sobald er gestoppt wird?! P.S.: Ich hab Deine Frage mal in den AS3 -Bereich verschoben.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 8
|
Danke für deine Antwort und dein Verschieben, da ich Flash mit AS assoziiere,hab ich gar nicht drüber nachgedacht, dass es noch ein AS Forum geben könnte. Wo genau soll ich den Listener entfernen? Ich hab einfach mal Versucht überall den Listener zu entfernen, es hatte keine Wirkung gezeigt, das Lied wird leider immer noch 2x abgespielt. Komischerweise nur, wenn der Song pausiert ist, ich zum nächsten Track wechsel und wieder auf den Pause/Play Button klicke...ich bin echt am verzweifeln. |
| | |
| | #4 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Du entfernst den Listener doch schon. Du musst nur die beiden Anweisungen vertauschen.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 8
|
Du meinst Code: if (channel){
channel.removeEventListener(Event.SOUND_COMPLETE, playPauseSong);
channel.stop();
} Code: if (channel){
channel.stop();
channel.removeEventListener(Event.SOUND_COMPLETE, playPauseSong);
} Ich hatte zuerst gedacht, dass du das meinst, aber das hat nicht funktioniert. Geändert von norora (06-01-2012 um 21:31 Uhr) |
| | |
| | #6 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Andersrum. Wenn's dann immer noch nicht funktioniert, muss ich mir morgen nochmal genau Deinen Code ansehn.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Jan 2012
Beiträge: 8
|
ach sry, siehste ich hatte die Änderung schon drin. Nein das Funktioniert leider nicht. Wenn du willst, kann ich dir die swf auch mal zeigen. Dann kannste den Bug in Aktion sehen.Ich dank dir vielmals für deine Mühe, ich weiß das zu schätzen ![]() *edit*: Hat sich erledigt, du brauchst es dir nicht mehr anschauen, ich hab den Fehler gefunden .in den Methoden nextSong und prevSong, habe ich nach songPosition folgendes eingefügt: Code: channel.stop(); pausedSong = true; Geändert von norora (07-01-2012 um 01:19 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash 8] MP3 Player - Next Sound Wird Nicht Abgespielt | palpalo | Flash Einsteiger | 19 | 15-08-2009 18:05 |
| verhindern, dass ein sound mehrfach hintereinander abgespielt wird ? | agm65 | Flash Einsteiger | 2 | 07-08-2007 12:16 |
| Musik wird sehr langsam abgespielt | Coldfist | Flash MX 2004 | 5 | 25-01-2005 21:56 |
| Musik aus nachträglich geledenem Film wird nicht abgespielt | ScopeOne | ActionScript 1 | 1 | 26-12-2001 10:32 |
| attchSound -> Sound wird einfach mehrfach wiedergegeben? | shck | Flash 4 und Flash 5 | 3 | 10-11-2001 09:01 |