2009-05-14 6 views
1

sehr neu zu blinken. Ich benutze den XSPF Music Player (die schlanke Version hier (http://musicplayer.sourceforge.net/), geschrieben in AS2), um eine Liste von MP3s auf einer Webseite abzuspielen. Ich muss jedes Mal ein Javascript aufrufen, wenn eine Spur geladen wird. Ich versuche dies über ExternalInterface zu tun, aber bisher ohne Glück. Hier ist mein Setup: Ich schreibe die Website auf einem Linux-Rechner, der auch den Testserver beherbergt, aber den Flash in Windows bearbeitet. Ich teste die Seite auf der gleichen Linux-Box mit Firefox 3.0.10. Das HTML und das ActionScript sind hier veröffentlicht (http://pastebin.com/f36b1da0e). Sieht jemand etwas falsch mit meinem Code? Irgendeine Idee, warum es nicht funktioniert? Ich fühle mich wie es etwas in meinem Grundeinstellung ist ...Kann ExternalInterface im Flash nicht zur Arbeit

Danke, Dan

Antwort

0

ich einen kurzen Blick auf den Code gehabt haben und es scheint, OK (Actionscript sowieso). Was ich sagen würde ist, verschiedene Methoden der Einbettung der swf versuchen. Vor einigen Jahren (also kann ich mich nicht an alle Details erinnern), aber ich habe die externe Schnittstelle mit verschiedenen Browsern getestet und manchmal würde es im IE funktionieren, aber nicht Firefox, und wenn ich eine andere Methode der Einbettung der swf ausprobieren würde, würde es funktionieren Firefox, aber nicht IE oder nur IE 6 und nicht 7!

Es war sehr nervig. Wie auch immer, die einzige Methode, die ich fand, die in beiden großen Browsern funktionierte (Chrome war out), war die Verwendung des HTML, der von Flexbuilder erstellt wird, wenn Sie Ihre App veröffentlichen. Ich musste natürlich ein bisschen ändern (weil wir Cocon & xsl's verwenden), aber es hat funktioniert.

(seitdem denke ich swfobject wurde verbessert, ich könnte versuchen, das so gut, wenn ich Sie war)

ich die HTML-Vorlage von Flexbuilder auf http://pastebin.com/f79b5b3f3 gebucht haben, werden Sie die AC_OETags.js Datei (http://pastebin.com/f3937a336 erfordern) und playerProductInstall.swf (Sie müssen möglicherweise flexbuilder herunterladen, um dies zu erhalten).


Code für einen Kommentar unter

<mx:HTTPService id="mySerivceCall" 
    url="{'myPHPFile.php'}" 
    result="resultHandler(event)" 
    fault="faulthandler(event)" 
    showBusyCursor="false" 
    resultFormat="e4x"> 
    <mx:request> 
     <time>{new Date().getTime()}</time> 
    </mx:request> 
</mx:HTTPService> 

ich immer die Zeit zu einem Http hinzufügen, stellt sicher, dass es nicht im Cache gespeichert bekommt (was IE sehr schlecht ist). Stecken Sie einfach alle anderen Parameter in den Anfragebereich und das Ergebnisformat sagt Flex, dass das Ergebnis in e4x XML-formatiert ist, was die Handhabung von XML sehr einfach macht.

+0

vergessen zu sagen, dass Sie immer getURL verwenden können (das wurde vor externalInterface verwendet, in AS2 hätte ich getURL verwendet, dann, als ich zu AS3 wechselte ich externalInterface). etwas wie getURL {"Javascript: alert ('hallo world')"}; Seien Sie vorsichtig damit, wenn Sie 2 getURLs im selben Frame aufrufen, wird nur der letzte aufgerufen. – kenneth

+0

kann ich getURL aufrufen und Variablen an eine PHP-Funktion übergeben? Ich benutze ExternalInterface, um Javascript aufzurufen, um eine XML-Datei jedes Mal zu bearbeiten, wenn ein Lied gespielt wird, also könnte es irgendwie besser sein, durch php irgendwie zu gehen. Außerdem fühle ich mich wie getURL ist veraltet und kann schließlich abgeschrieben werden; Das war der Grund, warum ich bisher davon Abstand hatte ... – danwoods

+0

Solange du AS2 benutzt, dann sehe ich keinen Grund, getURL zu benutzen. Wenn Sie eine PHP-Datei aufrufen möchten (wenn Sie flex verwenden können), sollten Sie einen httpservice-Anruf versuchen (ich habe den Code oben in die Antwort eingefügt). Das Übergeben von vars mit getURL sollte wie folgt aussehen, getURL ("myFuncInJavascript (" + param1 + "," + param2 + ")); – kenneth