sound的sound_complete事件

soundChannel的sound_complete事件并不能准确的发出,而且是大部分是监听不到这个事件,

然后只能我用了一个方法:现在播放的时间除以音乐的总时间大于99%就认为是结束了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个 ActionScript3.0 的类定义,用于储存游戏中的数据。下面对代码进行逐段详细解释: ```public class GameData extends MovieClip {``` 这一行定义了一个名为 GameData 的类,这个类继承自 MovieClip 类。 ```public static var gameTime:Number=5000;``` 这一行定义了一个静态变量 gameTime,类型为 Number,初始值为 5000。 ```public static var floorArray:Array=new Array;``` 这一行定义了一个静态变量 floorArray,类型为 Array,初始值为空数组。 ```public static var curretLayer:Number=0;``` 这一行定义了一个静态变量 curretLayer,类型为 Number,初始值为 0。 ```public static var lastLayer:Number=10;``` 这一行定义了一个静态变量 lastLayer,类型为 Number,初始值为 10。 ```public var mySound:Sound=new Sound;``` 这一行定义了一个实例变量 mySound,类型为 Sound,初始值为一个新的 Sound 对象。 ```public var otherSound:Sound=new Sound;``` 这一行定义了一个实例变量 otherSound,类型为 Sound,初始值为一个新的 Sound 对象。 ```public static var sc:SoundChannel=new SoundChannel;``` 这一行定义了一个静态变量 sc,类型为 SoundChannel,初始值为一个新的 SoundChannel 对象。 ```public function GameData(soundName:String) {``` 这一行定义了 GameData 类的构造函数,接受一个名为 soundName 的 String 类型参数。 ```var url:URLRequest=new URLRequest(soundName);``` 这一行创建了一个新的 URLRequest 对象,参数为 soundName。 ```mySound.load(url);``` 这一行将 mySound 对象加载指定的 URL 中的音频数据。 ```mySound.addEventListener(Event.COMPLETE,go);``` 这一行注册了 mySound 对象的 Event.COMPLETE 事件,并指定事件处理函数为 go。 ```function go(e:Event):void{``` 这一行定义了 go 函数,参数为 Event 对象。 ```(SampleDataEvent.SAMPLE_DATA,processSound);``` 这一行注册了 SampleDataEvent.SAMPLE_DATA 事件,并指定事件处理函数为 processSound。 ```sc=mySound.play();``` 这一行播放 mySound 对象中的音频数据。 ```function processSound(event:SampleDataEvent):void {``` 这一行定义了 processSound 函数,参数为 SampleDataEvent 对象。 ```var bytes:ByteArray = new ByteArray();``` 这一行创建了一个新的 ByteArray 对象。 ```mySound.extract(bytes, 8192);``` 这一行将 mySound 对象中的音频数据提取到 bytes 对象中,提取的数据长度为 8192。 ```event.data.writeBytes(upOctave(bytes));``` 这一行将处理过的音频数据写入事件数据中。 ```function upOctave(bytes:ByteArray):ByteArray {``` 这一行定义了 upOctave 函数,参数为 ByteArray 对象。 ```var returnBytes:ByteArray = new ByteArray();``` 这一行创建了一个新的 ByteArray 对象。 ```bytes.position = 0;``` 这一行将 bytes 对象的位置设置为 0。 ```while(bytes.bytesAvailable > 0) {``` 这一行开始一个 while 循环,条件为 bytes 对象是否还有可用的字节。 ```returnBytes.writeFloat(bytes.readFloat());``` 这一行将 bytes 对象中的一个 float 值写入 returnBytes 对象中。 ```returnBytes.writeFloat(bytes.readFloat());``` 这一行将 bytes 对象中的另一个 float 值写入 returnBytes 对象中。 ```if (bytes.bytesAvailable > 0) {``` 这一行判断 bytes 对象是否还有可用的字节。 ```bytes.position += 8;``` 这一行将 bytes 对象的位置向后移动 8 个字节(即 2 个 float 值的大小)。 ```}``` 这一行结束 if 判断。 ```}``` 这一行结束 while 循环。 ```return returnBytes;``` 这一行返回处理后的音频数据 ByteArray 对象。 ```}``` 这一行结束 upOctave 函数的定义。 ```}``` 这一行结束 GameData 类的定义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值