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

[AS3]as3下写的声音类文件示例

时间:2013-08-21 15:16cuplayer.com
[AS3]as3下写的声音类文件示例

[AS3]as3下写的声音类文件示例

  1. package com.gchen{ 
  2. import flash.media.Sound; 
  3. import flash.media.SoundChannel; 
  4. import flash.media.SoundTransform; 
  5. import flash.utils.getDefinitionByName; 
  6. import flash.utils.Timer; 
  7. import flash.events.Event; 
  8. import flash.events.TimerEvent; 
  9. public class SubSound extends Sound{ 
  10. private var _obj:Object={} 
  11. private var oldPlay:String=""; 
  12. private var timer:Timer; 
  13. private var timerChannel:Timer; 
  14. private var _end:int; 
  15. public function SubSound() { 
  16. super(); 
  17. timer=new Timer(100); 
  18. timerChannel=new Timer(100,20) 
  19. timer.addEventListener(TimerEvent.TIMER,timerHandle); 
  20. timerChannel.addEventListener(TimerEvent.TIMER,timerChannelHandle); 
  21. } 
  22. public function playSound(name:String,start:int=0,end:int=0,loops:int=0){ 
  23. if(name=="") return; 
  24. var channel:SoundChannel=new SoundChannel(); 
  25. var _sound:Sound=getSound(name); 
  26. channel=_sound.play(start); 
  27. oldPlay=name; 
  28. if(oldPlay!=""){ 
  29. timerChannel.reset(); 
  30. timerChannel.start(); 
  31. } 
  32. if(end!=0){ 
  33. _end=end; 
  34. timer.start(); 
  35. } 
  36. _obj[name]=channel; 
  37. } 
  38. public function get obj():Object{ 
  39. return _obj; 
  40. } 
  41. private function timerHandle(e:TimerEvent):void{ 
  42. if(_obj[oldPlay].position>_end){ 
  43. _obj[oldPlay].stop() 
  44. timer.reset() 
  45. }  
  46. } 
  47. private function timerChannelHandle(e:TimerEvent):void{ 
  48. for(var i in _obj) { 
  49. if(i!=oldPlay){ 
  50. var value:Number = _obj[i].soundTransform.volume 
  51. if(value<0){ 
  52. _obj[i].stop();  
  53. } 
  54. setVolume(_obj[i],value-.1) 
  55. } 
  56. } 
  57. } 
  58. public function setVolume(channel:SoundChannel,volume:Number):void {            
  59.             var transform:SoundTransform = channel.soundTransform; 
  60.             transform.volume = volume; 
  61.             channel.soundTransform = transform; 
  62.         } 
  63. private function getSound(name:String):*{ 
  64. var _c:*=getDefinitionByName(name) as Class 
  65. return new _c(); 
  66. } 
  67.  
  68. } 
  69. } 

 

热门文章推荐

请稍候...

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

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