·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0的sound类常用技巧整理(10)

时间:2013-05-08 17:11CuPlayer.com
问题十 如何暂停声音,如何从暂停的地方继续播放声音。 解决方法 通过记录当前声音的SoundChannel的position属性值,继续播放时用刚刚的值恢复一下。 具体讨论 在问题二中提到了sound对象的close()方法,它可以用

问题十
如何暂停声音,如何从暂停的地方继续播放声音。
解决方法
通过记录当前声音的SoundChannel的position属性值,继续播放时用刚刚的值恢复一下。
具体讨论
在问题二中提到了sound对象的close()方法,它可以用来停止一个声音文件的播放,但是,同时它也停止了声音文件的加载,当重新播放的时候,我们必须重新调用load()方法。
幸运的是,SoundChannel类提供了一个stop()方法,它可以使声音文件停止播放而不停止加载,当再次播放音乐的时候,只要调用play()方法就可以了。
我们应该记住:不管什么时候只要是使用play()方法都是从文件开头进行播放的,这相当于播放器中的“STOP■”按钮。创建一个“PAUSE‖”按钮 稍微有点麻烦。解决的策略是:当按下按钮的时候调用一个事件处理函数:这个函数从SoundChannel中读取当前的position数据并把它保存起 来,它提供了声音文件已经播放了多少毫秒。把这个量保存为类级别的,以便后面调用。此时,“PAUSE‖”按钮变成“PLAY”按钮,当再次被按下的时 候,调用sound对象的play()方法,通过刚才保存的位置信息,就能恢复到刚才停下来的那地方继续播放,下面给出例程:

  1. package { 
  2. import flash.display.Sprite; 
  3. import flash.media.Sound; 
  4. import flash.media.SoundChannel; 
  5. import flash.net.URLRequest; 
  6. import flash.events.Event; 
  7. import flash.display.Sprite; 
  8. import flash.events.MouseEvent; 
  9. public class PlayPause extends Sprite { 
  10. private var _sound:Sound; 
  11. private var _channel:SoundChannel; 
  12. private var _playPauseButton:Sprite; 
  13. private var _playing:Boolean = false
  14. private var _position:int; 
  15. public function PlayPause( ) { 
  16. // 创建一个声音对象,并播放之 
  17. _sound = new Sound(new URLRequest(“song.mp3″)); 
  18. _channel = _sound.play( ); 
  19. _playing = true
  20. //一个作为Play/Pause按钮的sprite 
  21. _playPauseButton = new Sprite( ); 
  22. addChild(_playPauseButton); 
  23. _playPauseButton.x = 10
  24. _playPauseButton.y = 20
  25. _playPauseButton.graphics.beginFill(0xcccccc); 
  26. _playPauseButton.graphics.drawRect(0, 0, 20, 20); 
  27. _playPauseButton.addEventListener(MouseEvent.MOUSE_UP, 
  28. onPlayPause); 
  29. public function onPlayPause(event:MouseEvent):void { 
  30. // CuPlayer.com提示:如果正在播放,停止,记下当前位置信息 
  31. if(_playing) { 
  32. _position = _channel.position; 
  33. _channel.stop( ); 
  34. else { 
  35. // CuPlayer.com提示:如果未播放,从记录处开始播放 
  36. _channel = _sound.play(_position); 
  37. _playing = !_playing; 

以上代码创建了一个sprite图像作为按钮,为其鼠标抬起事件添加了事件处理函数,如果当前声音正在播放,则停止当前播放,并记录当前位置,如果当前已经停止,则从刚才记录的位置开始播放。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器