2011-12-26 5 views
0

Я проектирую музыкальный плеер с использованием JavaScript (jQuery) и HTML5, а Flash AS3 - назад. В основном, я хочу, чтобы вы могли нажимать элементы управления HTML и взаимодействовать со вспышкой, чтобы играть/приостанавливать и пропускать дорожки в плейлисте (файл JSON-списка воспроизведения, читаемый JavaScript, передает идентификатор файла в AS3, считывает AS3 другой файл JSON, чтобы получить URL-адрес, затем воспроизводит звук)JavaScript/jQuery Flash AS3 взаимодействие

Это позволяет мне использовать Flash только для воспроизведения звука, создавая тем самым пользовательский интерфейс, независимо от поддержки браузера HTML5.

Я предполагаю, что мне придется «слушать» события в AS3, однако любые указатели на то, как задействовать эти события в JS и реагировать на события в AS3, будут большой помощью!

+1

Я предполагаю у вас уже есть Googled для «функции вызова флэш-памяти из javascript»? –

+0

Да, у меня есть страница, на которой истек срок действия ссылки, а затем я искал здесь и не нашел ничего, что казалось актуальным. Я использую свой телефон для поиска, пока у меня нет Интернета, и создаю это автономно на сервере localhost. –

+0

@ Энди Рэй, почему Google за это, когда он может спросить здесь? – Taurayi

ответ

1

Для связи между JavaScript и ActionScript, вы можете использовать ExternalInterface API:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

В качестве альтернативы для того, что вы хотите сделать, вы можете использовать Soundmanager 2 для воспроизведения звука, и делать все, вашего собственного программирования в JavaScript:

"Использование HTML5 и Flash, Soundmanager 2 обеспечивает надежную кросс-платформенный аудио в рамках единого API JavaScript."

http://www.schillmania.com/projects/soundmanager2/

+0

Спасибо, ты спас меня от суматохи! Также очень просто использовать ExternalInterface! –

1

Я был ответ на этот вопрос, но тогда ответ был принят, прежде чем я закончил. Во всяком случае здесь:

Main.as (класс документа):

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.external.ExternalInterface; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 
    import flash.net.URLRequest; 

    public class Main extends Sprite 
    { 
     private var _sound:Sound; 
     private var _soundChannel:SoundChannel; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 

     }// end function 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      if (ExternalInterface.available) 
      { 
       ExternalInterface.addCallback("loadSound", loadSound); 
       ExternalInterface.addCallback("stopSounds", stopSounds); 

      }// end if 

     }// end function 

     private function loadSound(url:String):void 
     { 
      _sound = new Sound(); 
      _sound.load(new URLRequest(url)); 
      if (_soundChannel) _soundChannel.stop(); 
      _soundChannel = _sound.play(); 

     }// end function 

     private function stopSounds():void 
     { 
      _soundChannel.stop(); 

     }// end function 

    }// end class 

}// end package 

sounds.json:

{ "sounds" : { 
    "sound": [ 
     { "name": "Sound 1", "url": "sounds/sound1.mp3" }, 
     { "name": "Sound 2", "url": "sounds/sound2.mp3" }, 
     { "name": "Sound 3", "url": "sounds/sound3.mp3" } 
    ] 
}} 

index.html:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"/> 
    <title>SoundPlayer</title> 
    <meta name="description" content="" /> 
    <script src="js/swfobject.js"></script> 
    <script src="js/jquery.min.js"></script> 
    <script> 
     var flashvars = { 
     }; 
     var params = { 
      menu: "false", 
      scale: "noScale", 
      allowFullscreen: "true", 
      allowScriptAccess: "always", 
      bgcolor: "", 
      wmode: "direct" // can cause issues with FP settings & webcam 
     }; 
     var attributes = { 
      id:"SoundPlayer" 
     }; 
     swfobject.embedSWF(
      "SoundPlayer.swf", 
      "altContent", "0", "0", "10.0.0", 
      "expressInstall.swf", 
      flashvars, params, attributes); 
    </script> 
    <style> 
     html, body { height:100%; overflow:hidden; } 
     body { margin:0; margin-top:25px; } 
     .button { float:left; margin-left:25px; width:100px; height:60px; 
        background-color:#fafafa; border: 1px solid #e1e1e1; 
        font-size:15px; font-family: Arial; text-align:center; padding-top:40px; 
        text-decoration: none; color: #323232; } 
    </style> 
</head> 
<body> 
    <script> 
    $(document).ready(function() { 

     var soundPlayer = $("#SoundPlayer").get(0); 

     $.getJSON('json/sounds.json', function(data) { 

      $.each(data.sounds.sound, function(i, sound) { 

       $("<a href=\"#\" class=\"button\">" + sound.name + "</a>") 
       .click(function() { soundPlayer.loadSound(sound.url); }) 
       .appendTo("body"); 

      }); 

      $("<a href=\"#\" class=\"button\">Stop Sounds</a>") 
      .click(function() { soundPlayer.stopSounds(); }) 
      .appendTo("body"); 

     }); 

    }); 
    </script> 
    <div id="altContent"> 
     <h1>SoundPlayer</h1> 
     <p><a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a></p> 
    </div> 
</body> 
</html>