Проблема с NetStream.pause () в ActionScript, вызванном из Javascript

Я работаю над очень простым проигрывателем, написанным на MXML + ActionScript, функции которого экспортируются для вызова простым Javascript на странице HTML.

Оба кода приведены ниже.

Для "пути" mp3 все работает отлично: воспроизведение, приостановка, возобновление и остановка ...
Для m4a "path" запуск работает хорошо, остановка тоже, но пауза вызывает ошибку
После запуска m4a, когда я нажимал кнопку «пауза», он правильно останавливает поток. Но когда я снова нажимаю кнопку для возобновления, она вообще не запускается снова Кто-нибудь знает, в чем проблема?
Является ли тот факт, что я использую простой веб-сервер Apache, а не настоящий сервер потоковой передачи Flash, причиной того, что он не работает?

Заранее благодарим за помощь.

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>



и базовый HTML + 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>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
2 264
1

Ответы 1

Я считаю, что вы хотите снова вызвать pause(), чтобы возобновить работу, а не play().
Согласно Документация NetStream, метод pause() используется как для паузы, так и для возобновления.

Другие вопросы по теме