经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 168269|回复: 4

[AS3] 闲着没事,做个倒着播放音乐的例子

[复制链接]
发表于 2010-7-31 18:35:04 | 显示全部楼层 |阅读模式
  1. package
  2. {
  3.         import flash.display.Sprite;
  4.         import flash.events.Event;
  5.         import flash.events.SampleDataEvent;
  6.         import flash.media.Sound;
  7.         import flash.utils.ByteArray;
  8.         /**
  9.          * @author FLASH023
  10.          * @date 2010-7-31 18:27
  11.         **/
  12.         public class PSound extends Sprite  
  13.         {
  14.                 private var len:uint;
  15.                 private var position:int;
  16.                 private var sound:Sound;
  17.                 private var soundData:ByteArray;
  18.                 public function PSound():void {
  19.                         stage?init(null):addEventListener (Event.ADDED_TO_STAGE, init);
  20.                 }
  21.                 private function init(e:Event ):void {
  22.                         var tempsound:RPSound=new RPSound  ;
  23.                         soundData =new ByteArray  ;
  24.                         tempsound.extract(soundData,999999999);//获取音乐数据
  25.                         len=soundData.length;
  26.                         position=int(len/8)-8;
  27.                         sound = new Sound  ;
  28.                         sound.addEventListener(SampleDataEvent.SAMPLE_DATA,onSampledata);
  29.                         sound.play();
  30.                         //
  31.                         removeEventListener(Event.ADDED_TO_STAGE, init);
  32.                 }
  33.                 private function onSampledata(e:SampleDataEvent):void {
  34.                         var _i:int=2048;
  35.                         while (_i--) {
  36.                                 soundData.position=position*8;//重新采样,这里也可以改一改,搞成控制速度,改变采样率等效果
  37.                                 e.data.writeFloat(soundData.readFloat());
  38.                                 e.data.writeFloat(soundData.readFloat());
  39.                                 position--;               
  40.                                 if (position<0) {
  41.                                         trace("声音播放完了");
  42.                                         return;
  43.                                         //position=int(len/8)-8;
  44.                                 }
  45.                         }
  46.                         //trace(position);
  47.                 }
  48.         }
  49.        
  50. }
复制代码


音乐也可以是外部加载的,但要获取外部加载的音乐数据,需要用到一个开源的类 MP3FileReferenceLoader

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1威望 +1 收起 理由
jimohuoshan + 1 有趣

查看全部评分

发表于 2010-7-31 20:07:27 | 显示全部楼层
flash.events.SampleDataEvent;

找不到这个

[[i] 本帖最后由 cjyyj 于 2010-7-31 20:12 编辑 ]
 楼主| 发表于 2010-7-31 20:20:04 | 显示全部楼层
原帖由 [i]cjyyj 于 2010-7-31 20:07 发表
flash.events.SampleDataEvent;

找不到这个



要发布设置FlashPlayer10 才有
发表于 2010-7-31 20:46:16 | 显示全部楼层
装了CS4,可以放了。

感觉可以用这个类做出搓碟的效果。
发表于 2010-8-5 09:55:30 | 显示全部楼层

回复 1# flash023 [楼主] 的帖子

问个弱弱的问题:RPSound是什么啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 京ICP备05002321号   

GMT+8, 2015-6-1 06:34 , Processed in 0.095692 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表