写了一个例子用于验证length和position间的不匹配。
/**
* 本例验证不能通过SoundChannel.position和Sound.length进行比较以判断音乐是否结束
* */
package {
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
import flash.utils.Timer;
public class _Sound extends Sprite
{
var _req:URLRequest;
var _sound:Sound;
var _channel:SoundChannel;
var _rect:Sprite;
var t:Timer;
public function _Sound()
{
_req = new URLRequest("daoxiang.mp3");
_sound = new Sound(_req);
_rect = new Sprite();
var g:Graphics = _rect.graphics;
g.beginFill(0xcc0000);
g.drawRect(0,0,100,100);
this.addChild(_rect);
_rect.x = (this.stage.stageWidth-_rect.width)/2;
_rect.y =(this.stage.stageHeight-_rect.height)/2;
_rect.addEventListener(MouseEvent.CLICK,onClick);
t = new Timer(0);
}
private function onClick(e:MouseEvent):void{
if(_channel==null){
//从声音长度96%处开始播放,以减少测试时间
_channel = _sound.play(_sound.length*.96);
t.start();
t.addEventListener(TimerEvent.TIMER,onProgress);
}
}
private function onProgress(e:TimerEvent):void{
if(_channel.position<_sound.length){
trace(_channel.position+" / "+_sound.length);
_rect.rotation+=5;
}
}
}
}
测试最终数据为:
223491.13378684808 / 223660.4081632653
由此可见,position总是小于length,无论任何时候!因此在播放过程中不能使用SoundChannel类对象.position<Sound类对象.length。
分享到:
相关推荐
本文将深入探讨如何在AS 3.0中使用`Sound`类及其相关APIs进行音频加载、播放和控制,以增强用户互动性和体验。 #### 导入必需的类 要使用`Sound`类及其他相关音频处理类,首先需要在脚本中导入它们: ```...
总结起来,将ByteArray转换为Sound涉及了Flex的Sound和SoundChannel类,以及ByteArray的数据处理。这个过程包括创建Sound对象、加载数据、创建SoundChannel以及可能的音频解码步骤。在处理过程中,要确保正确地监听...
在AS3中,音乐播放的核心是使用Sound类和SoundChannel类。Sound类用于加载和控制音频资源,而SoundChannel类则用于处理音频的播放、暂停、停止以及获取播放进度等操作。在创建音乐播放器时,首先需要通过URLLoader类...
- 在Flash中创建一个电影剪辑元件作为进度条,根据`soundChannel.position`和`sound.length`(音频总长度)的比例来更新进度条的宽度。 - 添加事件监听器来实时更新进度条,例如`Event.ENTER_FRAME`。 6. **音乐...
4. **进度条**:根据`SoundChannel.position`和`Sound.length`属性显示当前播放进度。 5. **歌曲切换**:加载新的`Sound`对象并开始播放。 6. **播放列表**:如果存在多个音乐文件,需要实现列表选择和播放功能,这...
3. 多音轨管理:如果播放器支持播放多个音频,需要管理多个SoundChannel,确保它们之间的正确同步。 7. 性能优化:合理安排资源加载和释放,避免内存泄漏,确保播放器在各种设备上运行流畅。 总结,开发一个AS3.0...
通过使用Flash的Sound类和SoundChannel类,开发者可以实现对音频流的精确控制。Sound类用于加载和控制音频文件,而SoundChannel类则用于跟踪音频播放状态,例如音量、当前播放位置等。 歌词显示功能是通过同步歌词...
3. **播放、暂停和停止**: 实现这些功能需要使用Flash的Sound类和SoundChannel类。Sound类用于加载和处理音频,而SoundChannel类则用于控制播放状态,如播放、暂停和停止。 4. **上一首、下一首功能**: 这需要一个...
AS3.0支持`Sound`和`SoundChannel`类来播放音频,而`Tween`类或第三方库如TweenMax可以帮助实现平滑的动画过渡效果。 最后,游戏的保存和加载机制也很重要。尽管AS3.0没有内置的持久化存储,但可以通过本地存储API...
6. **控制音频**:`SoundChannel`对象提供了控制音频播放的方法,如`stop()`、`pause()`和`resume()`,以及获取当前播放位置(`position`属性)和音量控制(`volume`属性)。 7. **用户界面**:通常,我们会创建一...
soundChannel.position = timeline.currentPosition; } ``` 调节音量大小则通过设置`SoundTransform`对象的`volume`属性来实现: ```actionscript var soundTransform:SoundTransform = new SoundTransform(); ...
2. **播放、暂停、上一首、下一首切换**: 这些基本操作通过AS3.0中的Sound类和Event类实现。例如,可以创建一个Sound对象加载MP3文件,然后监听和处理Event.SOUND_COMPLETE事件来实现播放和暂停。上一首和下一首切换...
- `Sound`类用于加载、播放和控制音频,而`Video`类则用于播放和显示视频流。 4. **加载媒体**: - 使用`Sound.load()`和`Video.attachVideo()`方法加载本地文件或URL中的媒体。 - 对于本地文件,可以使用`...
这个程序基于AS脚本,利用了Flash平台中的多个关键类,如Graphics、URLRequest、Sound、SoundChannel和SoundMixer,来实现动态绘制声音波形并播放音频。 首先,`Graphics`类是ActionScript中用于在舞台上绘制的基本...
1. 类与对象:在AS3中,所有的音频操作都是基于类的,例如,`Sound`类用于处理音频数据,`SoundChannel`类用于控制音频播放。理解面向对象的概念对于音频编程至关重要。 2. 音频格式:AS3支持多种音频格式,如MP3、...
AS3.0的Sound类和SoundChannel类可以帮助播放和控制音频。 8. **物理引擎**:虽然简单的跳跃游戏可能不需要完整的物理引擎,但更复杂的游戏可能涉及到重力、摩擦力等物理特性。Flash中有如Papervision3D或Box2D这样...
接着,我们需要导入一系列的Flash类库,包括`NativeMenu`、`NativeMenuItem`、`File`、`Sound`和`SoundChannel`等,这些类将用于构建菜单、处理文件选择和音频播放。 在`Main`类中,我们定义了几个关键变量,如`...
使用`Sound`和`SoundChannel`类处理音频。`snd.play()`播放音频,`channel.position`获取当前位置。要暂停,记录`pausePosition`,然后调用`channel.stop()`。重新播放时,使用`snd.play(pausePosition)`从暂停的...
`flash.media.SoundChannel`类代表了正在播放的声音实例,提供了诸如控制播放位置、获取音量和样本数据等方法。我们可以通过它来控制音频的播放进度、暂停和停止。 5. **时间线控制**: 播放器通常需要实现进度条...