如何获取仍在加载的声音对象的最终长度?

2024-02-22

我正在 ActionScript 3 中创建一个基本的 MP3 播放器。我有一个基本的进度条,指示歌曲已播放了多少。进度以 0 到 1 之间归一化的小数百分比计算,如下所示:

var progress:Number = channel.position / sound.length;

问题是,如果音频仍在加载/缓冲,则 sound.length 不正确。这会导致我的进度条跳跃,甚至向后移动,直到声音完全加载并且 sound.length 不再改变。

确定仍在加载的声音对象的最终长度的最佳方法是什么?


至少有两个选择:

1:将进度条保持在 0%,并且在声音完全加载之前不要移动它。那是:

sound.addEventListener(Event.COMPLETE, onSoundComplete);

private function onSoundComplete(event:Event):void {
    // Calculate progress
}

2:基于已加载文件的百分比的近似百分比。像这样的东西:

private var _sound:Sound = /* Your logic here */;
private var _channel:SoundChannel = _sound.play();

_sound.addEventListener(ProgressEvent.PROGRESS, onSoundProgress);

private function onSoundProgress(event:ProgressEvent):void {
    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;
    var approxProgress:Number
        = _channel.position / _sound.length * percentLoaded;
    // Update your progress bar based on approxProgress
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取仍在加载的声音对象的最终长度? 的相关文章

  • 捕获设备活动时未触发 AVAudioSessionInterruptionNotification

    我遇到了问题 AVAudioSessionInterruptNotification 在 iOS 7 0 4 上 我在 NSNotificationCenter 上注册 然后激活 AVAudioSession 一切正常 但如果激活了摄像头
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • 在 Flex 中隐藏右键单击上下文菜单中的默认选项

    我正在开发一个 Flex 应用程序 我想为其添加一个上下文菜单 我用这段代码得到了它 var myMenu ContextMenu new ContextMenu myMenu hideBuiltInItems var defaultIte
  • Javascript 通过ExternalInterface 来刷新

    我想知道是否有人可以查看我的代码 我正在尝试使用以下代码将虚拟变量从 javascript 传递到 actionscript 3 HTML
  • 如何通过一键或链接切换音频播放()暂停()?

    我有一个在单击锚标记时播放的音频文件 如果再次单击锚标记 我希望音频暂停 我只是对 javascript 了解不够 无法完成后半部分 我不想更改他们单击的锚标记的内容 我只想让音频文件在他们单击标记时启动和暂停 这是我到目前为止所拥有的 它
  • 在浏览器中创建 bash shell 的可行性如何?

    主要是 我是 Unix 机器上的 C C 程序员 但是我会因为基于浏览器的 shell 访问 Linux 机器而放弃 所以 问题是 这有多难 什么方法最适合在网页中构建真正的 shell 级访问 闪光 JavaScript 我知道这确实是所
  • 使用 UIImage 和 caf 创建视频文件的问题

    我已经阅读了在互联网上可以找到的所有关于此功能的帖子 并且我在创建视频文件方面取得了一些成功 但我还剩下 3 个问题 而且似乎没有人提到过这一点 我有 3 个问题 视频在某些播放器上无法正常播放 quicktime window 视频只播放
  • 在 Flex 中以 HTTP Post 方式上传任意数据

    我们目前有一个 Java 小程序 可以生成大量数据并将其上传到我们的服务器 我们拥有的上传方法之一是使用 HTTP POST 到我们的服务器 其内容只是原始数据 没有多部分编码或任何内容 我正在考虑实现一个具有相同功能的 Flex 应用程序
  • ReferenceError:错误#1069:属性 box_mc_0

    我试图使用循环隐藏舞台上的影片剪辑 但在发布它时出现以下错误 这只是这个概念的一个示例 var q for q 0 q lt 3 q stage box mc q visible false 错误消息 参考错误 错误 1069 财产box
  • 如何使用 Rails 应用程序中的 s3 在存储桶之间复制文件?

    我目前正在开发一个 Rails 应用程序 尝试将视频从 s3 中的一个存储桶复制 移动到另一个存储桶 但是我在 Rails 应用程序上不断收到代理错误 502 在杂种日志中 它显示 无法分配内存 一旦发生此错误 应用程序就会终止 我们必须重
  • 如何在 ItemRenderer 内使用数据网格范围外的变量?

    我使用将项目数组绑定到数据网格ItemRenderer 我用data变量来控制可绑定数据 我也有someComponentVariable需要插入到每一行中 但它是在组件范围内声明的 因此数据网格似乎无法重新识别它 编译错误 我如何使用这个
  • 如何降低iphone的sdk Audioqueue的声音?

    我正在使用 Aran Mulhollan 的 RemoteIOPlayer 在 SDK iphone 中使用音频队列 我可以毫无问题 添加两个信号来混合声音 通过乘以从 wav 文件中获得的 UInt32 来增加音量 但所有其他操作都会给我
  • 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

    我正在尝试使用音频流式传输 FFmpeg 我将在下面展示我的代码 导入模块 import subprocess as sp 创建变量 rtmpUrl rtmp a rtmp youtube com live2 key camera path
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB
  • 垃圾收集最佳实践

    如果您要从显示列表中删除某个 MovieClip 并且该 MovieClip 又具有具有自己的事件侦听器的子 MovieClip 则是否有必要从子 MovieClip 中删除所有侦听器 或者只是直接从显示列表中删除的父级 MovieClip
  • AS3如何在角色死亡动画结束时转到MainTimeline中的下一帧

    所以我需要知道我的角色 鸟 是否用管道 hitTestObject 在动画结束后播放骰子动画 它需要在主时间轴中转到游戏结束帧 if bird hitTestObject pipe1 bird gotoAndStop 3 frame 3 w
  • 如何在Android中使用AudioRecorder录制音频

    我想从 Android 设备捕获音频 我下面的代码似乎成功地制作了一个wavSD卡上有文件但无法播放 我尝试使用不同的媒体播放器来播放它 但没有成功 我的代码中有一个问题导致了这个问题 code public class MainActiv
  • Flash AS3 EventDispatcher - 有什么方法可以获取已注册侦听器的列表吗?

    有没有什么方法可以获取注册监听器的列表EventDispatcher 我知道EventDispatcher有hasEventListener方法告诉您是否注册了任何侦听器 但是有没有一种简单的方法来询问EventDispatcher找出听众
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Flex PopUpManager:如何检测模式弹出窗口的存在?

    我的 Flex 3 应用程序有一些通过 PopUpManager 显示的模式对话框 但有时我希望其他视图组件知道有弹出窗口显示 PopUpManager 没有任何方法来实际检查弹出窗口是否存在 有没有其他方法可以在 flash flex 中

随机推荐