Note that there are some explanatory texts on larger screens.

plurals
  1. PODetect via ExternalInterface when swf player ready to play
    primarykey
    data
    text
    <p>In my .fla file I include external actionscript file as indicated in the instruction file</p> <pre><code>import xxx.xxx.xxx.sound.MP3Player; var mp3Player:MP3Player = new MP3Player(); addChild(mp3Player); </code></pre> <p>Now I'd like to use his loadMp3 function </p> <pre><code>/** * Start loading the mp3 file. */ private function loadMP3():void { mp3.load(new URLRequest(MP3_URL)); mp3.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true); channel = mp3.play(); channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete, false, 0, true); _isPlaying = true; } </code></pre> <p>to discover when the mp3 fully loaded and ready to play sound via ExternalInterface function.</p> <p>how could I do? thanks</p> <p>FULL CLASS</p> <pre><code>package xxx.xxx.xxx.sound { import flash.display.MovieClip; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.geom.ColorTransform; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.utils.ByteArray; import flash.text.TextField; public class MP3Player extends MovieClip { // Location of the config xml file public static const CONFIG_XML_URL:String = "xml/config.xml"; // URL of the mp3 file public static var MP3_URL:String = "mp3/track.mp3"; // Main color for the mp3 player public static var MAIN_COLOR:uint = 0xFF0000; // An XMLLoader to load the configuration file private var xmlLoader:XMLLoader; // Sound object to be played private var mp3:Sound = new Sound(); // A sound channel to play the sound object private var channel:SoundChannel; // Holds the pause position private var pausePos:Number; // A byte array to read spectrum private var bytes:ByteArray = new ByteArray(); // Indicates whether the mp3 player is playing or not. private var _isPlaying:Boolean = false; // Holds the previous label color private var _prevColor:uint; public function MP3Player() { // Initialize the player init(); } /** * Initializes the player. */ private function init():void { // Use as a button useHandCursor = true; buttonMode = true; mouseChildren = false; equalizer.alpha = 0; // Add necessary event listeners addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, true); addEventListener(MouseEvent.MOUSE_OVER, onMouseOver, false, 0, true); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut, false, 0, true); loadConfig(); } /** * Sets the color of the player to the given parameter. */ public function setColor(color:uint):void { MAIN_COLOR = color; // Change the color of the equalizer var colorTransform:ColorTransform = equalizer.transform.colorTransform; colorTransform.color = MAIN_COLOR; equalizer.transform.colorTransform = colorTransform; } /** * Loads the configuration file to the memory. */ private function loadConfig() { // Start loading the config.xml file xmlLoader = new XMLLoader(CONFIG_XML_URL); xmlLoader.addEventListener(XMLLoader.XML_LOADED, onXMLLoaded); xmlLoader.load(); } /** * This method is called when the xml file is loaded to the memory. */ private function onXMLLoaded(evt:Event):void { // Get configuration parameters var xml:XML = xmlLoader.getXML(); MP3_URL = xml.@mp3URL; MAIN_COLOR = xml.@color; // Change the color of the equalizer equalizer.alpha = 1; setColor(MAIN_COLOR); // Start loading the mp3 loadMP3(); } /** * Start loading the mp3 file. */ private function loadMP3():void { mp3.load(new URLRequest(MP3_URL)); mp3.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true); channel = mp3.play(); channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete, false, 0, true); _isPlaying = true; } /** * This method is called whenever a new enter frame event occurs. */ private function onEnterFrame(evt:Event):void { try { SoundMixer.computeSpectrum(bytes, true, 0); } catch (e:Error) { } equalizer.update(bytes); } /** * This method is called when playing the sound is finished. */ private function onSoundComplete(evt:Event):void { // Loop channel = mp3.play(); channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete, false, 0, true); _isPlaying = true; } /** * This method is called when the mouse is over the mp3 player. */ private function onMouseOver(evt:MouseEvent):void { // Change the color of the equalizer _prevColor = label.textColor; label.textColor = MAIN_COLOR; } /** * This method is called when the mouse leaves the mp3 player. */ private function onMouseOut(evt:MouseEvent):void { label.textColor = _prevColor; } /** * This method is called when the mouse is clicked on the mp3 player. */ private function onMouseDown(evt:MouseEvent):void { if (_isPlaying) { pausePos = channel.position; channel.stop(); _isPlaying = false; label.text = "MUSIC OFF"; } else { channel = mp3.play(pausePos); channel.addEventListener(Event.SOUND_COMPLETE, onSoundComplete, false, 0, true); _isPlaying = true; label.text = "MUSIC ON"; } } /** * This method is called if an IO error occurs. */ private function onIOError(evt:IOErrorEvent):void { } } </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload