12.1.5 追踪音频进度

  播放的每种声音具有其自己的SoundChannel对象。SoundChannel对象控制声音的左和右回放声道的音量,并记录播放的进度。实际上,每个播放中的音乐对应一个SoundChannel对象,而不是Sound对象。Sound对象类似于声音的数据,可以同时产生同一个Sound对象的多个SoundChannel播放。当应用程序播放Sound对象时,将创建一个新的SoundChannel对象来控制回放。

下面的代码演示了如何利用SoundChannel对象追踪声音的播放进度:

var mysound:Sound=new Sound();

mysound.load(new URLRequest("sounddata/sample.mp3"));

mysound.addEventListener(Event.COMPLETE onSoundLoaded);

 

var sdtf:TextField=new TextField;

var tff:TextFormat=new TextFormat();

tff.size=65;

tff.color=0x88FF66;

sdtf.defaultTextFormat=tff;

sdtf.text=" " sdtf.width=150;

sdtf.x=100 sdtf.y=65;

addChild(sdtf);

 

//创建定时器

var sndchecker:Timer=new Timer(5000);

 

//添加定时器事件侦听

sndchecker.addEventListener(TimerEvent.TIMERcheckfunc)

 

var sndchannel:SoundChannel;

 

//侦听加载完成

function onSoundLoaded(event:Event):void

{

  var localSound:Sound = event.target as Sound;

  sndchannel=localSound.play();

         sndchecker.start();

         trace("load complete");

}

 

//侦听Timer事件

function checkfunc(eve:TimerEvent):void{

         var sound_progress:uint=100*sndchannel.position/mysound.length;

         sdtf.text=sound_progress+"%";

}

代码中利用一个事件定时器,不断的查询SoundChannel对象的位置。SoundChannel对象在调用Sound类的Play()方法时被自动创建和作为返回值提供。使用一个自定义的SoundChannel类型标识符接收这个返回值,以供后面的代码使用。

程序的运行效果请参考图所示:

在声音播放结束时,FlashPlayer会发送Event.COMPLETE消息,响应该消息,执行相应的删除和内存回复操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值