Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-03-2006, 21:50   #1 (permalink)
Tom
 
Registriert seit: Nov 2005
Beiträge: 11
Sound lade Problem

ich habe mir ein kleines Script geschrieben, das eine Sounddatei als Stream laden und abspielen soll. Hierbei soll, falls es nicht geladen werden konnte konnte, das nächste Stück abgespielt werden.

Code:
// Verzeichnis zu der XML-Datei
var XMLIndexPath:String = "http://localhost/sound/";

// Dateiname der Indexdatei der einzelnen Gallerien
var IndexFilename:String = "index.xml";

// die Beschreibung der einzelnen Sounddateien
var music:Array = new Array();
var soundControl:Sound = new Sound;
var soundID:Number = -1;

function playNextSound() {
	playSound(getNextSoundID());
}

function playSound(nr:Number) {
  if (nr >= 0 && nr < music.length) { 
	soundID = nr;
	createSoundControl(music[soundID].filename);
  }
}

function createSoundControl(soundfile:String) {
	if (soundControl <> null) {
	  delete soundControl;
	}

	soundControl = new Sound;
    soundControl.onLoad = function(success) {
		if (!success) {
		  music[soundID].success = false;
	      playNextSound();
        } else {			
          trace("Laden erfolgreich!");
        }
	}
	
	soundControl.onSoundComplete = function() {
	  trace("Sound zu ende gespielt");
	  playNextSound();
	}
	soundControl.loadSound(soundfile, true);
}

function getNextSoundID() {
	var nextID = soundID;
	
	do {
	  nextID++;
	  if (nextID >= music.length) nextID = 0;
	} while(nextID <> soundID && music[nextID].success==false);
	
	if (nextID == soundID) nextID = -1;
	trace("nächste ID = " + nextID);
	return nextID;
}

function loadSounds() {
    trace("lade Sound XML Datei...");	
   	var xml:XML = new XML();

    // Störende Leerzeichen ignorieren
    xml.ignoreWhite = true;

    // XML-Datei einlesen 
    xml.onLoad = function(success) {
		if (success) {
	       var ref = this.firstChild;
		   
 	       // speichern der Informationen im Array
	       for (var i = 0; i<ref.childNodes.length; i++) {
		      music[i]              = [];
		
		      music[i].sounds       = ref.childNodes[i].firstChild.nodeValue;
		      music[i].filename     = XMLIndexPath + ref.childNodes[i].attributes.filename;
              music[i].success      = true;
		  }	
		   
		   // Buttons erzeugen
		   if (music.length > 0) {
			 playSound(0);
		   }
        } else {
	      trace("Sound XML Indexdatei nicht geladen");
        }
     }
	 
	 xml.load(XMLIndexPath + IndexFilename);
}

loadSounds();
Hierbei habe ich aber folgendes Problem zum Testen haben ich mir eine XML-Datei gestrickt, in der die ersten vier Titel nicht existieren

Code:
<?xml version="1.0" encoding="UTF-8"?>
<SOUNDS>
   <SOUND filename="0.mp3"/>
   <SOUND filename="0.mp3"/>
   <SOUND filename="0.mp3"/>
   <SOUND filename="0.mp3"/>
   <SOUND filename="1.mp3"/>  
<SOUNDS>
Nur leider stopt mein Flashplayer mal nach dem nicht erfolgreichen laden des 2. bzw. 3. Titels. (Anmerkung: 0.mp3 existiert nicht (bewusst aus Testzwecken so geschrieben), 1.mp3 existiert aber) Und dieses will mir einfach nicht einleuchten.

Sieht einer von euch evtl. einen Fehler? Bzw. kennt einer von euch eine Bezugsquelle eines Actionscripts, das wie meins arbeitet?


Thomas

Geändert von Thomas G. Meyer (13-03-2006 um 21:52 Uhr)
Thomas G. Meyer ist offline   Mit Zitat antworten
Alt 13-03-2006, 22:27   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Versuch mal
PHP-Code:
soundControl = new Sound(this); 
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele