| |||||||
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: Nov 2010
Beiträge: 4
| as2, xml einlesen, mp3s in flash laden, und per externalinterface abspielen
Hallo Community, bin neu hier, folglich mein erster Post.. Bin jetzt schon seit fast 5 Stunden am rumprobieren, aber komme auf kein brauchbares Ergebnis.. Muss dazu noch sagen, hab grad mit Flash (AS) angefangen! Also kann man da noch nicht so viel von mir erwarten ;-) Geht um ein kleines Flash (Version 8 mit AS2) für eine Website, welches kurze Sounds (mp3's / wave's) aus einer xml lesen soll und dann direkt in die Flash läd, damit man sie per JavaScript (ExternalInterface.addCallback) direkt abspielen kann, ohne das da noch großartig was nachgeladen werden muss.. Hier erstmal der Inhalt der xml (sounds.xml): Code: <?xml version="1.0" encoding="utf-8"?> <sounds> <sound sound_id="sound_01" sound_file="sounds/sound1.mp3"/> <sound sound_id="sound_02" sound_file="sounds/sound2.mp3"/> <sound sound_id="sound_03" sound_file="sounds/sound3.mp3"/> <sound sound_id="sound_04" sound_file="sounds/sound4.mp3"/> <sound sound_id="sound_05" sound_file="sounds/sound5.mp3"/> </sounds> Code: stop();
var XMLdata = new XML();
XMLdata.ignoreWhite=true;
XMLdata.load("sounds.xml");
XMLdata.onLoad = function(success){
var amount = XMLdata.firstChild.childNodes.length;
for(var i=0; i<amount; i++){
sound_id = XMLdata.firstChild.childNodes[i].attributes.sound_id;
sound_file = XMLdata.firstChild.childNodes[i].attributes.sound_file;
this[sound_id] = new Sound();
this[sound_id].loadSound(sound_file, false);
ExternalInterface.addCallback("play_"+this[sound_id], this[sound_id].start());
}
} Hoffe ich bin kein hoffnungsloser Fall und ihr könnt mir helfen ![]() thx |
| | |
| | #2 (permalink) |
| brand new user Registriert seit: May 2002 Ort: Laimbach 6 1/2
Beiträge: 16.884
|
Kann mich jetzt auch täuschen, eaber soweit ich gelesen hab, ist "ExternalInterface" erst ab ActionScript 3 verfügbar!
__________________ Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake! "Wer tanzen will, muß erst gehen lernen" |
| | |
| | #3 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Versuch's mal mit: PHP-Code: @RustyCake: Zitat:
__________________ 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! Geändert von Martin Kraft (14-11-2010 um 10:55 Uhr) | |
| | |
| | #5 (permalink) | ||
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat: Zitat:
__________________ 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! Geändert von Martin Kraft (14-11-2010 um 13:01 Uhr) | ||
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 4
|
Guten Morgen, und danke für die vielen Antworten ![]() habs mit.. Code: ExternalInterface.addCallback("play_"+sound_id, this[sound_id], this[sound_id].start); Kann es sein, dass meine for Schleife das Problem ist? Bzw das einladen der mp3 dateien? Die xml wird ja korrekt eingelesen, denn 'id' und 'file' als Text auszuspucken klappt ja.. nur iwie scheinen die generierten Variablen dann leer zu sein (kein Sound drinne).. Wenn ich direkt das.. Code: sound_01 = new Sound();
sound_01.loadSound("sounds/sound1.mp3", false);
sound_01.start(); Aber wenn ich dann das mache.. Code: sound_01 = new Sound();
sound_01.loadSound("sounds/sound1.mp3", false);
ExternalInterface.addCallback("play_sound_01", sound_01, sound_01.start); ![]() und wenn ich die schleife laufen lasse, und dann nach der Schleife einfach "sound_01.start();" sage, gehts auch nicht.. ..iwie ist da der Worm drinne, kanns sein das es vielleicht doch dran liegt das ich es als Flash8 in As2 exportiere? nur wenn ich auf Flash9/10 + As3 gehe, ist das ganze ActionScript ein einziger Fehler beim exportieren.. ![]() thx |
| | |
| | #7 (permalink) | |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
| Zitat:
Mal ein ganz anderer Gedanke: Wieso lädst Du eigentlich alle Sounds vor? Lad' doch immer nur den, der gerade über ExternalInterface aufgerufen wird und spiel ihn direkt ab! Nein, ein Script ist entweder AS1/2 oder AS3! Einfach die Exporteinstellungen ändern, bringt da nix!
__________________ 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! Geändert von Martin Kraft (15-11-2010 um 10:00 Uhr) | |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 4
|
Problem gelöst nur das callBack muss ich jetzt noch zum laufen bringen.. aber das kann ich erst naher zuhause auf meinem xampp testen..Hier die Lösung (die Sounds werden nach dem 'onLoad' zum Test direkt abgespielt): Code: stop();
var XMLdata = new XML();
XMLdata.ignoreWhite=true;
XMLdata.load("sounds.xml");
XMLdata.onLoad = function(success){
var amount = XMLdata.firstChild.childNodes.length;
for(var i=0; i<amount; i++){
sound_id = XMLdata.firstChild.childNodes[i].attributes.sound_id;
sound_file = XMLdata.firstChild.childNodes[i].attributes.sound_file;
_root[sound_id] = new Sound();
_root[sound_id].onLoad = function(success:Boolean){
_root[sound_id].start();
ExternalInterface.addCallback("play_"+sound_id, _root[sound_id], _root[sound_id].start);
}
_root[sound_id].loadSound(sound_file, false);
}
} |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Nov 2010
Beiträge: 4
|
Um das Ganze nochmal komplett zu machen.. -> in as2 hat das mit dem externalinterface.addcallback nicht gefunzt.. nach 3 Tage googlen hab ich mich dann dafür entschieden, dass ganze auf as3 umzubauen (da hatte ich ja bereits ne statische Variante, wo die Sounds direkt mit in die swf compilet werden..)Dann hab ich daran noch zwei Tage rumgefriggelt, und nachdem ich eben grad gemerkt habe, dass ich die externen Sound Files (mp3s) auch einfach in ein Array laden kann (was mein Problem mit den in der For Schleife dynamisch erzeugten Variablen aus dem Weg schafft) läuft es jetzt ![]() Folglich läd mein as3 Script jetzt mp3 Files aus einer xml Liste nach, schreibt die in ein Array, dessen Items mit den IDs aus der xml benannt werden, und können dann per ExternalInterface.AddCallBack (JavaScript anfrage mit Parameter) aufgerufen und abgespielt werden. Hier mein Script damit auch andere noch was davon haben: Code: stop();
import flash.external.ExternalInterface;
import flash.net.URLRequest;
import flash.events.Event;
var myLoader:URLLoader = new URLLoader();
var myURL:URLRequest = new URLRequest("sounds_as3.xml");
myLoader.addEventListener(Event.COMPLETE, onLoadComplete);
myLoader.load(myURL);
var myXML:XML;
var sounds:Array = [];
function onLoadComplete(event:Event):void{
XML.ignoreWhitespace = true;
XML.ignoreComments = true;
myXML = new XML(event.target.data);
for(var i:int = 0; i < myXML.sound.length(); i++){
var sound_id:String = myXML.sound[i].sound_id.text();
var sound_file:String = myXML.sound[i].sound_file.text();
var myURL:URLRequest = new URLRequest(sound_file);
sounds[sound_id] = new Sound(myURL);
}
}
function playSound(objParams:Object):void{
var param:String = objParams.sound_id_param;
sounds[param].play();
}
ExternalInterface.addCallback("playSound", playSound); EDIT: und hier nochmal die xml und das JavaScript dazu (hatte ich ganz Vergessen): Code: <?xml version="1.0" encoding="utf-8"?>
<sounds>
<sound>
<sound_id>chimes</sound_id>
<sound_file>sounds/chimes.mp3</sound_file>
</sound>
<sound>
<sound_id>chord</sound_id>
<sound_file>sounds/chord.mp3</sound_file>
</sound>
<sound>
<sound_id>ding</sound_id>
<sound_file>sounds/ding.mp3</sound_file>
</sound>
</sounds> Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
function playSound(sound_id){
var obj = swfobject.getObjectById("soundFlash");
if (obj && typeof obj.playSound != "undefined") {
var objParams = {
sound_id_param: sound_id,
sonstiges: "Weitere parameter"
};
obj.playSound(objParams);
}else{
alert("undefined");
}
}
</script>
</head>
<body>
<object id="soundFlash" data="sounds.swf" type="application/x-shockwave-flash" width="1" height="1">
<param name="wmode" value="transparent">
</object>
<a href="javascript:playSound('chimes');">play chimes</a>
<a href="javascript:playSound('chord');">play chord</a>
<a href="javascript:playSound('ding');">play ding</a>
</body>
</html> Geändert von Brian Miller (18-11-2010 um 10:56 Uhr) |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| addcallback, externalinterface, new sound, xml |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mp3s per click abspielen | Markus85 | Flash Einsteiger | 1 | 10-01-2007 18:05 |
| dynamisch mp3s aus DB laden | amadeus | Flash MX | 3 | 03-02-2004 22:03 |
| MP3s lauter abspielen? | FlashBAK | Flash MX | 9 | 01-10-2003 22:20 |
| MP3s laden und crossfaden | p-cord | Flash MX | 2 | 22-09-2002 21:34 |
| MP3s laden | gnomjogson | ActionScript 1 | 4 | 24-04-2002 08:43 |