【问题标题】:Processing insists pause() is not a function, when it very much is处理坚持 pause() 不是一个函数,当它非常重要时
【发布时间】:2019-01-25 22:20:05
【问题描述】:

Aite,[这里的第一张海报,请不要抨击] 所以,我正在使用声音库,我当然记得要导入它,并且工作得很好,证明我使用的所有其他功能都按预期工作并且在编辑器和执行中都没有问题。 当然,除了这个 pause() 函数的小虫子,我按照下面的方法编写了它,使用的语法与所有其他函数没有什么不同,只是发现 Processing 并不热衷于接受它的存在。 问题显示同时使用 3.3.6 和 3.5。

哦,还有,显然 isPlaying() 返回一个 int,这是怎么回事?

如果,正如我所怀疑的那样,下面的单行代码不足以与信息相结合以深入了解它,这里是代码的 Dropbox 链接(因为它使用了一堆文件)所以你可以自己测试它。 如果您尝试按原样运行它,它有点行不通,因为它在尝试加载所有歌曲时(在设置的最后一行)时搞砸了,是的,我也需要一些帮助......如果你只加载第一个!

https://www.dropbox.com/sh/di7mwit0w2l4513/AABipGDAdoKx277f8Hg_ZfhDa?dl=0

(请不要指望清晰、广泛评论的编码。在我知道这是一件事之前我就开始这样做了。深表歉意。当然,你可以问任何让你困惑的事情)

我尝试了什么,呃,写得好吗??? 我使用了 .play()、.stop() 和音量的,并且按照说明,它们都可以正常工作。

import processing.sound.*;
SoundFile[] songs= new SoundFile[1];
void setup(){
    songs[0]=new SoundFile(this,"Small Bump.mp3");
    songs[0].play();
}
void draw(){
}
void keyPressed(){
if (songs[0].isPlaying()==1)songs[0].pause();
}

【问题讨论】:

  • 能否请您在帖子中直接包含minimal reproducible example
  • @KevinWorkman 完成!
  • 您的代码使用了一个从未初始化过的i 变量。
  • @KevinWorkman 哦,糖衣酒,我很抱歉!我在原始草图中进行了初始化,但我修剪了那个部分,因为它不是导致问题的那个。现已修复,再次抱歉!

标签: audio processing


【解决方案1】:

当我将您的代码复制到我的处理编辑器中时,我收到了几个错误:

songs[0]="Small Bump.mp3";

sounds 数组包含 SoundFile 的实例,但您试图在此处存储 String 值。也许您正在寻找 SoundFile 构造函数?

if (songs[0].isPlaying()==1)

isPlaying() 函数返回 boolean 值,但您将其与 int 值进行比较。

songs[i].pause();

您尚未在任何地方声明此 i 变量。可能意味着这是一个0

如果我修复了所有这些错误,那么您的代码就可以正常编译。

您可能需要查看 Sound library here 的参考。

【讨论】:

  • 顶部和底部的错误是我弄乱了我不关心的代码位的修剪,就像我这个完全的小丑一样。我确实打算将其设为 0。修复了该问题并在当天晚些时候安排了一些自我惩罚。正如我实际上提到的那样,中间一个是我的另一个头疼的问题:该函数实际上为我返回了一个 int,我不知道为什么!
  • 找到了罪魁祸首!显然,这些功能是在我未安装的更新中更改/添加的,这与一些早期检查让我相信的相反。很抱歉浪费了您的时间,感谢您向我证明我的代码本身不是问题的根源,让我再看看它可能是什么。
【解决方案2】:

我安装的声音库是 1.3.2,或者类似的东西。 我读过的所有参考资料都是针对 2.0+ 的。 通过“添加库”菜单更新后,一切都解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多