2009-05-14 6 views
1

très nouveau pour le flash. J'utilise le lecteur de musique XSPF (la version mince trouvée ici (http://musicplayer.sourceforge.net/), écrit en AS2) pour lire une liste de mp3 sur un site Web. Je dois faire un appel javascript chaque fois qu'il charge une piste. J'essaye de faire ceci par ExternalInterface, mais jusqu'ici sans la chance. Voici ma configuration: J'écris le site sur une machine Linux qui héberge également le serveur de test, mais édite le flash dans Windows. Je suis en train de tester le site sur la même machine Linux avec Firefox 3.0.10. Le code HTML et actionscript sont affichés ici (http://pastebin.com/f36b1da0e). Est-ce que quelqu'un voit quelque chose de mal avec mon code? Une idée de pourquoi ça ne marche pas? Je me sens comme il est quelque chose dans la configuration de base ...Impossible d'obtenir ExternalInterface en flash pour fonctionner

Merci, Dan

Répondre

0

J'ai eu un coup d'œil à votre code et il semble OK (actionscript de toute façon). Ce que je dirais est d'essayer différentes méthodes d'intégration du swf. Il y a quelques années (donc je ne me souviens pas de tous les détails) mais je testais l'interface externe avec différents navigateurs et parfois cela fonctionnait dans IE, mais pas dans firefox, et si j'essayais une méthode différente d'intégration du swf cela fonctionnerait Firefox mais pas IE ou juste IE 6 et non 7!

C'était très agaçant. Quoi qu'il en soit, la seule méthode que j'ai trouvé qui a fonctionné dans les deux principaux navigateurs à l'époque (chrome était sorti) était d'utiliser le code HTML qui est créé à partir de flexbuilder lorsque vous publiez votre application. J'ai bien sûr dû le modifier un peu (car on utilise le cocon & xsl's) mais ça a marché.

(depuis, je pense swfobject a été amélioré, je pourrais essayer aussi bien si je vous étais)

J'ai posté le modèle HTML à partir flexbuilder sur http://pastebin.com/f79b5b3f3 Il faudra le fichier AC_OETags.js (http://pastebin.com/f3937a336) et le playerProductInstall.swf (vous devrez peut-être télécharger flexbuilder pour l'obtenir).


Code

pour commentaires ci-dessous

<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> 

ajouter toujours le temps à un HTTPService, fait en sorte qu'il ne soit pas mis en mémoire cache (IE qui est très mauvais). Il suffit de coller d'autres paramètres dans la section de demande et le format de résultat indique simplement que le résultat est formaté en XML dans e4x, ce qui rend la manipulation de XML très simple.

+0

J'ai oublié de dire que vous pouvez toujours utiliser getURL (ceci était utilisé avant externalInterface, dans AS2 j'aurais utilisé getURL, puis quand je suis passé à AS3 j'ai fait externalInterface). quelque chose comme getURL {"Javascript: alert ('hello world')"}; Attention, si vous appelez 2 getURLs dans la même trame, seul le dernier sera appelé. – kenneth

+0

puis-je utiliser getURL pour appeler et transmettre des variables à une fonction php? J'utilise ExternalInterface pour appeler javascript pour éditer un fichier xml à chaque fois qu'une chanson est jouée, donc il serait peut-être préférable de passer par php de toute façon. En outre, j'ai l'impression que getURL est obsolète et pourrait éventuellement être déprécié; C'est la raison pour laquelle je suis resté loin de ça jusqu'à présent ... – danwoods

+0

tant que vous utilisez AS2, alors je ne vois aucune raison de ne pas utiliser getURL. Si vous souhaitez appeler un fichier php (si vous êtes en mesure d'utiliser flex) alors vous devriez essayer un appel httpservice (j'ai collé le code ci-dessus en réponse). passer vars en utilisant getURL devrait être quelque chose comme le suivant, getURL ("myFuncInJavascript (" + param1 + "," + param2 + ")"); – kenneth

Questions connexes