Я основываю свою игру на примере лунного ландшафта. Это цикл запуска, который я использую (очень похоже на то, что используется в lunarlander). Я получаю значительные проблемы с производительностью, связанные с моим рисунком, даже если я почти ничего не рисую.Простой вопрос о примере lunarlander
Я заметил метод ниже. Почему создается холст и устанавливается нулевой цикл?
@Override
public void run()
{
while (mRun)
{
Canvas c = null;
try
{
c = mSurfaceHolder.lockCanvas();//null
synchronized (mSurfaceHolder)
{
updatePhysics();
doDraw(c);
}
} finally
{
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null)
{
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
Большую часть времени я читал что-нибудь о полотнах больше вдоль линий:
mField = new Bitmap(...dimensions...);
Canvas c = new Canvas(mField);
Мой вопрос: почему пример Google, сделано таким образом (пустой холст), какие преимущества этого, и есть ли более быстрый способ сделать это?
А, я довольно новичок в этом, если вы не могли сказать. С методом lockCanvas будет ли какое-либо преимущество в производительности для указания грязного прямоугольника? Кроме того, вам нужно указать размер холста в любом месте? – Smills