Question

Im essayant d'utiliser JS pour envoyer des données à mon Flash player de musique AS2.0 avec ExternalInterface, sauf qu'il n'y a pas de bons tutoriels ou des guides sur ExternalInterface que je peux trouver. Je veux être en mesure de changer la chanson en cours dans le lecteur en cliquant sur un lien JavaScript, et à la page / charge de fenêtre sans cliquer, jouer une chanson par défaut.

Je ne besoin d'une réponse super compliquée sur les sons de chargement en flash, etc., je suis juste avoir beaucoup de difficultés à obtenir JS envoyer quoi que ce soit à Flash, et quand je suis au travail que - aurais-je besoin de mettre un peu si / else dans le flash pour déterminer si le lien a été cliqué ou non?

Merci

modifier Heres le code à partir de maintenant:

AS 2.0

import flash.external.ExternalInterface;

ExternalInterface.addCallback('loadSong', null, flashFunction);

function flashFunction (val) {
    extra = val;
}

JavaScript

var flashObj = document.getElementById('VSPLAYER');

function loadSong(val) {
    return val
}

HTML

<a href="javascript:loadSong('2')">Play song 2</a>

<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
<param name="movie" value="vs_player.swf" />
<param name="allowscriptaccess" value="always" />
</object>
Était-ce utile?

La solution

Dans Flash, de préférence dans la première image, mettez ceci:

ExternalInterface.addCallback('callFlashFunction', null, yourFlashFunction);

function yourFlashFunction (arg1, arg2) { ... }

Dans votre Javascript, vous pouvez l'appeler via:

var flashObj = document.getElementById ('FlashObjID');
flashObj.callFlashFunction (arg1, arg2);

Si votre fichier SWF est dans un domaine différent, souvenez-vous de permettre l'accès au script via:

<object id="FlashObjID"> ... <param name="allowscriptaccess" value="always" /> ... </object>

Mise à jour (en fonction de votre HTML):

<a href="#" onclick="return jsLoadSong('2')">Play song 2</a>

<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
    <param name="movie" value="vs_player.swf" />
    <param name="allowscriptaccess" value="always" />
</object>

<script type="text/javascript">
    var flashObj = document.getElementById ('VSPLAYER');
    function jsLoadSong (val)
    {
        flashObj.loadSong (val);
        return false; // to prevent default link action
    }
</script>

J'ai essayé de clarifier les noms pour montrer qui est en Javascript, et qui est lié à la Flash. Notez également que vous auriez besoin d'attendre jusqu'à ce que le DOM est chargé avant d'appeler la définition flashObj. ici, la balise est <script> après la <object>, il fonctionne très bien.

Autres conseils

Merci pour les messages, mais oui, javascript appel ne vaut pas pour moi non plus. Après tant de bidouiller, a finalement obtenu à travailler avec:

$(this)[0].loadSong();  

(en utilisant jQuery, où a déjà été sélectionné flashObj)

Espérons que cela aide quelqu'un.

Je ne sais pas si vous avez besoin [0] sinon en utilisant jQuery.

Lire ailleurs que l'objet DOM HTML réel est sélectionné dans la première tranche du tableau du sélecteur. Désolé mes explications sont un peu noobish, espérons juste qu'il vous aide à le faire fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top