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");
}
Затем в обработке эскиза, вы бы передать PApplet
в свой Sound
конструктор, используя ключевое слово this
:
void setup(){
Sound yourSound = new Sound(this);
}
Вариант 2: Поскольку обработка рассматривает все классы как внутренние классы, вы также можете использовать слегка странный синтаксис, ссылаясь на «внешний это», используя имя вашего эскиза, вместо того, чтобы проезжать в this
из вашего эскиза:
Sound(){
file = new SoundFile(YourSketchName.this, "upNoise.wav");
}
Но это немного странно, и не будет работать во всех случаях, так что вы, вероятно, лучше просто проездом this
в от эскиза.
Дополнительная информация может быть найдена в the reference.
Спасибо, что первый вариант сработал для меня! –