【问题标题】:Processing load and play sound处理加载和播放声音
【发布时间】:2016-08-17 01:03:31
【问题描述】:

我正在尝试为我的游戏加载不同的声音。一种声音必须播放超时播放跳跃,称为“upNoise”。我想要一个名为“声音”的类并调用不同的函数来播放不同的文件。问题说:它说构造函数“SoundFile(Sound,String)”不存在。这是我的代码。

import processing.sound.*;

class Sound {

  SoundFile file;

  Sound() {

    file = new SoundFile(this, "upNoise.wav");

  }

}

【问题讨论】:

    标签: java processing


    【解决方案1】:

    SoundFile 构造函数需要一个 PApplet 的实例传递给它的构造函数。

    当您在草图中时,您可以使用 this 关键字来引用该 PApplet 实例。

    但由于您在 Sound 类中,您的 this 关键字指的是 Sound 实例。这就是您传递给SoundFile 构造函数的内容。而SoundFile 不知道你的Sound 类是什么,所以你得到了那个错误。

    要解决此问题,您必须将 PApplet 实例传递给 SoundFile 构造函数。

    选项 1:PApplet 实例作为参数传递给 Sound 构造函数,然后将该参数传递给 SoundFile 构造函数。您的 Sound 构造函数可能如下所示:

    Sound(PApplet sketch){
       file = new SoundFile(sketch, "upNoise.wav");
    }
    

    然后在您的处理草图中,您将使用 this 关键字将 PApplet 传递给您的 Sound 构造函数:

    void setup(){
       Sound yourSound = new Sound(this);
    }
    

    选项 2: 由于 Processing 将所有类都视为内部类,因此您还可以使用稍微奇怪的语法来引用“外部 this”,即使用您的草图名称而不是传入this 来自你的草图:

    Sound(){
       file = new SoundFile(YourSketchName.this, "upNoise.wav");
    }
    

    但这有点奇怪,并不是在所有情况下都有效,所以你最好只从你的草图中传递this

    更多信息可以在the reference找到。

    【讨论】:

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