2010-02-09 7 views
1

J'ai un programme flash très simple qui joue de la musique. Il se compose d'un bouton de pause de lecture et d'une minuterie qui indique la position actuelle de la chanson. J'essaie de rendre possible la pause ou la lecture de la chanson en utilisant un bouton de forme normale.Pourquoi je ne peux pas obtenir Javascript pour parler à ActionScript

<div class="musicplayer_playpause"> 
      <script type="text/javascript"> 
      AC_FL_RunContent('codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','65','height','68','src','player','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','wmode','transparent','id','flashobject','movie','player','flashvars','id=<?=$cur_songid;?>&type=<?=$_GET["type"];?>&csid=<?=$cur_songid;?>&l=<?=$Arrcntt+1;?>"'); //end AC code 
      </script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" id="flashobject" width="65" height="68"> 
       <param name="movie" value="player.swf" allowscriptaccess="always"/> 
       <param name="quality" value="high" /> 
       <param name="wmode" value="transparent" /> 
     <param name="id" value="flashobject" /> 
     <param name="swliveconnect" value="true" /> 
       <embed src="player.swf" name="flashobject" width="65" height="68" quality="high" allowscriptaccess="always" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent" swliveconnect="true" ></embed> 
      </object> 
      </noscript></div> 

Voici la fonction Javascript, que je mets dans la section:

<script type="text/javascript"> 
function Pause() { 
var flash = document.getElementById('flashobject'); 
flash.PlayPause; 
} 
</script> 

Et enfin voici le bouton J'utilise:

<form> 
<input type="button" value="Play" name="Play" onClick="Pause();"> 
</form> 

Lorsque je clique sur le bouton, Firefox de La console d'erreur dit "Flash is null" Que fais-je de mal?

+0

Vous êtes javascript élément manque un guillemet. Faites-moi savoir si cela le résout afin que je puisse l'afficher comme une réponse. – Anthony

+0

Merci, mais maintenant je reçois "Flash est nul" –

Répondre

1

L'étiquette de script contenant une pause est mal formée. Ajoutez une citation de fin à l'attribut de type.

En outre, AC_FL_RunContent ne définit pas un ID pour le film. Ajoutez-y 4 paramètres supplémentaires: 'id', 'flashobject', 'name', 'flashobject'.

AC_FL_RunContent est décrite dans ce Adobe technote http://kb2.adobe.com/cps/127/tn_12701.html, qui dit ceci:

  • id (attribut pour objet, objet uniquement)
    Identifiant du film. Identifie le film Flash dans l'environnement hôte (un navigateur Web , par exemple) afin qu'il soit référencé en utilisant un langage de script .
  • nom (incorporé uniquement) Film nom. Identifie le film Flash à l'environnement hôte (un navigateur Web, généralement ) afin qu'il puisse être référencé en utilisant un langage de script tel que JavaScript ou VBScript.
+0

Merci! Mais maintenant je reçois "flash is null". Je pourrais vraiment utiliser de l'aide à ce sujet. –

+0

Ajout de balises à AC_FL_Runcontent mais je reçois toujours "flash is null" –

+0

Fait tous ces changements (voir les éditions ci-dessus) mais obtient toujours "flash is null". –

3

Je ne pense pas que ce soit une solution directe à votre problème, mais je sais par expérience que l'utilisation

var flash = document.getElementById('flashobject'); 
flash.PlayPause; 

ne montrera pas le même comportement dans tous les navigateurs populaires. vous pouvez essayer d'utiliser la fonction suivante pour renvoyer l'objet:

function thisMovie(movieName) { 
    if(navigator.appName.indexOf("Microsoft") != -1) { 
    return window[movieName]; 
    } else { 
    return document[movieName]; 
    } 
}; 
thisMovie('flashobject').PlayPause(); 

Si vous utilisez jQuery cependant, ce qui suit fera:

$("#flashobject")[0].PlayPause(); 

modifier: J'ai trouvé une version plus mise à jour du thisMovie fonction.Je recommande toujours la façon dont jQuery bien :)

function getFlashMovieObject(movieName){ 
    if(document.embeds[movieName]) 
    return document.embeds[movieName]; 
    if(window.document[movieName]) 
    return window.document[movieName]; 
    if(window[movieName]) 
    return window[movieName]; 
    if(document[movieName]) 
    return document[movieName]; 
    return null; 
} 
+0

Je suis de retour "thisMovie ('flashobject') est indéfini" lorsque le bouton est cliqué. –

0

trouver ceci: <param name="movie" value="player.swf" allowscriptaccess="always"/> remplacer par

<param name="movie" value="player.swf" /> 
    <param name="allowScriptAccess" value="always" /> 

Je encore utiliser la fonction de Jasper

0

Jasper a le droit de méthode JavaScript, mais vous aussi besoin de add callbacks pour vos fonctions JS en ActionScript, de sorte que AS sait les écouter.

AS Code:

import flash.external.ExternalInterface; 
ExternalInterface.addCallback("PlayPause", playPauseMovie); 
... 
function playPauseMovie():void { 
    //code goes here 
}