2008-10-28 4 views
0

Je travaille sur un lecteur très simple écrit en MXML + ActionScript dont les fonctions sont exportées pour être appelées par un simple Javascript dans une page HTML.
Problème avec NetStream.pause() en ActionScript à partir de Javascript

Les deux codes sont fournis ci-dessous.

Pour le « chemin » mp3 tout fonctionne parfaitement pour jouer, pause, reprise et l'arrêt ...
Pour le « chemin » m4a, le démarrage fonctionne bien, l'arrêt aussi, mais est mise en pause mise sur écoute
Après avoir commencé un m4a, quand j'ai cliqué sur "pause" il arrête à juste titre le flux.
Mais quand je suis en cliquant sur le bouton pour reprendre, il ne recommence pas du tout

Est-ce que quelqu'un sait où est le problème?
Est-ce que le fait que j'utilise simplement un simple serveur Web Apache et non un vrai serveur Flash Streaming est la raison pour laquelle cela ne fonctionne pas?

Merci d'avance pour votre aide.

Le MXML + ActionScript 3

<?xml version="1.0"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="callBacks()"> 
    <mx:Script> 
     <![CDATA[ 
       import flash.events.Event; 
       import flash.media.Sound; 
       import flash.net.URLRequest; 
       import flash.external.ExternalInterface; 
       public var playingChannel:SoundChannel; 
       public var playingSound:Sound; 
       public var pausePosition:int=0; 
       public var playingUrl:String=""; 
       public var codec:String=""; 
       public var playingStream:NetStream; 

       public function playSound(url:String):void { 
        if (playingUrl!=url) { 
         if (playingUrl!="") { 
          stopSound(); 
         } 
         playingUrl=url; 
         codec=playingUrl.substring(playingUrl.length-3); 
         if (codec=="m4a") { 
          var mySound:SoundTransform; 
          var connect_nc:NetConnection = new NetConnection(); 
          connect_nc.connect(null); 
          playingStream=new NetStream(connect_nc); 
          playingStream.play(url); 
         } 
         else if (codec=="mp3") { 
          playingSound=new Sound(new URLRequest(url)); 
          playingChannel=playingSound.play(); 
         } 
        } 
        else { 
         if (codec=="m4a") 
          playingStream.pause(); 
         else 
          playingChannel=playingSound.play(pausePosition); 
        } 
       } 
       public function pauseSound():void { 
        if (codec=="m4a") 
         playingStream.pause(); 
        else if (codec=="mp3") { 
         pausePosition=playingChannel.position; 
         playingChannel.stop(); 
        } 
       } 
       public function stopSound():void { 
        if (codec=="m4a") 
         playingStream.close(); 
        else if (codec=="mp3") { 
         pausePosition=0; 
         playingChannel.stop(); 
        } 
        playingUrl=""; 
       } 
       public function callBacks():void { 
        ExternalInterface.addCallback("play",playSound); 
        ExternalInterface.addCallback("pause",pauseSound); 
        ExternalInterface.addCallback("stop",stopSound); 
       } 
     ]]> 
    </mx:Script> 
</mx:Application> 



et le code HTML de base + Javascript

<html> 
<head> 
<script src='jquery.js'></script> 
<script> 
    function play() { 
     //alert('clicked'); 
     var url=$("#url").val(); 
     var k=url.substring(url.length-3); 
     fromFlash('testFlash').play(url); 
     var b=document.getElementById('pp'); 
     b.setAttribute('src','pauseButton.jpg'); 
     b.setAttribute('onclick','pause()'); 
    } 
    function pause() { 
     fromFlash('testFlash').pause(); 
     var b=document.getElementById('pp'); 
     b.setAttribute('src','playButton.jpg'); 
     b.setAttribute('onclick','play()'); 
    } 
    function stop() { 
     fromFlash('testFlash').stop(); 
     var b=document.getElementById('pp'); 
     b.setAttribute('src','playButton.jpg'); 
     b.setAttribute('onclick','play()'); 
    } 
    function fromFlash(movieName) { 
     var isIE = navigator.appName.indexOf("Microsoft") != -1; 
     return (isIE) ? window[movieName] : document[movieName]; 
    } 
</script> 
</head> 
<body> 
<object id="testFlash" width="0" height="0"> 
    <param name="movie" value="player.swf"></param> 
    <param name="allowFullScreen" value="true"></param> 
    <embed name="testFlash" src="player.swf" type="application/x-shockwave-flash" allowfullscreen="true" width="0" height="0"> 
    </embed> 
</object> 
<input id="url"/> 
<span><img id="pp" src="playButton.jpg" onclick="play()"/></span> 
<span><img src="stopButton.jpg" onclick="stop()"/></span> 
</body> 
</html> 

Répondre

2

je crois que vous voulez appeler pause() pour reprendre, non play().
Selon la méthode NetStream documentation, la méthode pause() est utilisée à la fois pour la pause et la reprise.

Questions connexes