Flash / Flex / ActionScript/Development/Sound
Содержание
- 1 Applying Sound Transformations
- 2 Buffering a Streaming Sound
- 3 Controlling Playback of a Sound
- 4 Getting the Size of a Sound File
- 5 How Sound Works in AS3: assume that there is an MP3 file with the name sound.mp3 stored in the same folder as the SWF file.
- 6 Offsetting the Start of a Sound
- 7 Pausing and Restarting a Sound
- 8 Reading the Sound Spectrum
Applying Sound Transformations
<source lang="java">
package {
import flash.display.*; import flash.media.*; import flash.events.*; import flash.net.*; import flash.text.*; public class Main extends Sprite { private var _id3Display:TextField = new TextField(); private static const SONG_URL:String ="http://www.wbex.ru/y.mp3"; public function Main () { _id3Display.width = 300; _id3Display.height = 400; addChild(_id3Display); var sound:Sound = new Sound (); sound.addEventListener(Event.ID3, onID3); sound.load(new URLRequest(SONG_URL)); sound.play(); } private function onID3(event:Event):void { var sound:Sound = event.target as Sound; _id3Display.text = sound.id3.songName + "\n"; _id3Display.appendText("by "+ sound.id3.artist + "\n"); _id3Display.appendText("from the album "+ sound.id3.album); } }
}
</source>
Buffering a Streaming Sound
<source lang="java">
package{
import flash.display.Sprite; import flash.media.*; import flash.events.*; import flash.net.*; import flash.text.*; public class Main extends Sprite{ public function Main(){ var context:SoundLoaderContext = new SoundLoaderContext(); context.bufferTime = 10000; // set buffer time to 10 seconds. var song:Sound = new Sound(new URLRequest("http://losdesigns.ru/music/robotPicksFlowers.mp3"), context); song.play(); } }
}
</source>
Controlling Playback of a Sound
<source lang="java">
package{
import flash.display.Sprite; import flash.media.*; import flash.events.*; import flash.net.*; import flash.text.*; import flash.utils.*; public class Main extends Sprite{ public function Main(){ var jazz:Sound = new Sound(new URLRequest("My.mp3")); var jazzChannel:SoundChannel = jazz.play(); // sound is playing var timer:Timer = new Timer(5000, 1); timer.addEventListener(TimerEvent.TIMER, onTimeout); timer.start(); function onTimeout() { jazzChannel.stop(); // sound stops playing } } }
}
</source>
Getting the Size of a Sound File
<source lang="java">
//ProgressBar package {
import flash.display.Sprite; import flash.media.Sound; import flash.net.URLRequest; import flash.events.Event; public class Main extends Sprite { private var _sound:Sound; var i:int = 1; public function Main( ) { addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(event:Event):void { var barWidth:int = 200; var barHeight:int = 5; var loaded:int = i++; var total:int = 100; if(total > 0) { graphics.clear( ); graphics.beginFill(0xFFFFFF); graphics.drawRect(10, 10, barWidth, barHeight); graphics.endFill( ); var percent:Number = loaded / total; graphics.beginFill(0xCCCCCC); graphics.drawRect(10, 10, barWidth * percent, barHeight); graphics.endFill( ); } } }
}
</source>
How Sound Works in AS3: assume that there is an MP3 file with the name sound.mp3 stored in the same folder as the SWF file.
<source lang="java">
package{
import flash.display.Sprite; import flash.media.*; import flash.events.*; import flash.net.*; import flash.text.*; public class Main extends Sprite{ public function Main(){ var sound:Sound = new Sound(); var url:String = "sound.mp3"; var urlRequest:URLRequest = new URLRequest(url); sound.load(urlRequest); } }
}
</source>
Offsetting the Start of a Sound
<source lang="java">
package {
import flash.display.Sprite; import flash.media.Sound; import flash.net.URLRequest; public class Main extends Sprite { private var _sound:Sound; private var _cuePoints:Array; public function Main( ) { _cuePoints = [0, 10000, 30000, 68000, 120000]; _sound = new Sound(new URLRequest("song.mp3")); playCuePoint(2); } public function playCuePoint(index:int):void { _sound.play(_cuePoints[index]); } }
}
</source>
Pausing and Restarting a Sound
<source lang="java">
package {
import flash.display.Sprite; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.events.Event; import flash.display.Sprite; import flash.events.MouseEvent; public class PlayPause extends Sprite { private var _sound:Sound; private var _channel:SoundChannel; private var _playPauseButton:Sprite; private var _playing:Boolean = false; private var _position:int; public function PlayPause( ) { _sound = new Sound(new URLRequest("song.mp3")); _channel = _sound.play( ); _playing = true; _playPauseButton = new Sprite( ); addChild(_playPauseButton); _playPauseButton.x = 10; _playPauseButton.y = 20; _playPauseButton.graphics.beginFill(0xcccccc); _playPauseButton.graphics.drawRect(0, 0, 20, 20); _playPauseButton.addEventListener(MouseEvent.MOUSE_UP, onPlayPause); } public function onPlayPause(event:MouseEvent):void { if(_playing) { _position = _channel.position; _channel.stop( ); } else { // If not playing, re-start it at // last known position _channel = _sound.play(_position); } _playing = !_playing; } }
}
</source>
Reading the Sound Spectrum
<source lang="java">
package {
import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.media.Sound; import flash.media.SoundChannel; import flash.net.URLRequest; import flash.utils.ByteArray; public class Main extends Sprite { private var _sound:Sound; private var _channel:SoundChannel; public function Main( ) { addEventListener(Event.ENTER_FRAME, onEnterFrame); _sound = new Sound(new URLRequest("song.mp3")); _channel = _sound.play( ); } public function onEnterFrame(event:Event):void { var spectrum:ByteArray = new ByteArray( ); flash.media.SoundMixer.ruputeSpectrum(spectrum); for(var i:int=0;i<256;i++) { trace(spectrum.readFloat()); } } }
}
</source>