2016-08-16 3 views
1

Я пытаюсь загрузить различные звуки для своей игры. Один звук должен играть сверхурочно в прыжках в игру, называемом «upNoise». Я хочу иметь класс под названием «Звук» и вызывать разные функции для воспроизведения разных файлов. Проблема гласит: «Говорит, что конструктор« SoundFile (Sound, String) »не существует. Вот мой код.Обработка загрузки и воспроизведения звука

import processing.sound.*; 

class Sound { 

    SoundFile file; 

    Sound() { 

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

    } 

}

ответ

0

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.

+0

Спасибо, что первый вариант сработал для меня! –

Смежные вопросы