Не существует волшебного способа поддержки двух совершенно разных типов.Однако есть несколько обходных путей.
Вы можете использовать перегрузку , что означает создание отдельных функций для каждого типа.Примерно так:
void drawRect(PGraphics pg){
pg.rect(1, 2, 3, 4);
}
void drawRect(PApplet p){
p.rect(1, 2, 3, 4);
}
Или вы можете полагаться на тот факт, что класс PApplet
имеет переменную g
, которая ссылается на его внутренний экземпляр PGraphics
.Тогда вам понадобится только одна функция, которая принимает PGraphics
и передает переменную g
, когда у вас есть экземпляр PApplet
.Примерно так:
void setup(){
size(500, 500);
}
void draw(){
drawCircle(g);
}
void drawCircle(PGraphics pg){
pg.ellipse(mouseX, mouseY, 20, 20);
}
Этот подход немного хакерский, поэтому еще лучшим решением было бы реорганизовать ваш код PApplet
, чтобы он всегда явно отображался в PGraphics
.Затем вы можете передать этот PGraphics
экземпляр вашей функции.