код ниже. По сути, у меня есть анонимный экземпляр класса Cell, который должен что-то рисовать на экране. В одном из методов, которые я переопределил (аннотировал), я вызываю метод, который существует только внутри анонимного класса (randomFireBubble, отмеченный комментариями). Вот в чем проблема: метод выполняется и запускается (я проверял различные операторы печати, чтобы проверить это), но он ничего не рисует на экране! Но это даже не проблема. Проблема заключается в том, что если я заменю вызов метода телом метода, он будет работать как положено.
По сути, моя проблема заключается в следующем: если я заменяю вызов метода на тело метода, и все работает нормально, почему я не могу просто вызвать метод? Это сбивает меня с толку.
Edit: я должен уточнить, что на самом деле не имеет значения, что делает randomFireBubble. Проблема в том, что если у меня вместо вызова есть тело метода, то он работает, но если я вызываю метод, то нет.
public static Cell Fire (int x, int y, Grid grid)
{
return new Cell(x, y, grid)
{
@Override
public void draw (int size, int x, int y, Graphics graphics)
{
super.draw(size, x, y, graphics);
cellColor = fireColor(Math.random());
randomFireBubble(graphics, size); // < -- Problem here
}
private void randomFireBubble (Graphics graphics, int size)
{
int x1 = (int) StaticCalculations.randomDoubleBetween(- x * 1.5, x * 1.5);
int y1 = (int) StaticCalculations.randomDoubleBetween(- y * 1.5, y * 1.5);
int width1 = (int) StaticCalculations.randomDoubleBetween(0, size * 1.5);
graphics.setColor(fireColor(Math.random()));
graphics.fillOval((x + 1) * size - size / 2 + x1, (y + 1) * size - size / 2 + y1, width1, width1);
}
//This method is irrelevant, it works perfectly fine.
private Color fireColor (double r)
{
if(r <= 0.33)
{
return Color.yellow;
}
else if(r <= 0.66)
{
return Color.orange;
}
else
{
return Color.red;
}
}
};
}