Возможно, проблема в том, что вы выполняете вычисления и переключаете видимость в одном кадре.
Итак, в основном то, что вы, вероятно, делаете, это:
- кнопка нажата
loadingText.visible = true;
- тяжелые расчеты
loadingText.visible = false;
- кадр отображается
Проблема здесь в том, что в отличие от асинхронных операций (например, загрузка контента), вам нужно «дождаться» окончания вычислений. Этого можно избежать, подождав фрейм, пока не начнутся вычисления Для простоты loadingText.visible
может быть флагом, указывающим на необходимость расчета, который будет проверяться каждый кадр.
- кнопка нажата
loadingText.visible = true;
- рамка визуализирована, загрузка текста теперь видна
- во входящем фрейме: отметьте
if(loadingText.visible)
- тяжелые расчеты
loadingText.visible = false;
- рамка отображается
Вы все еще не можете ничего сделать при расчете результата. Это означает, что показ загрузки текста работает, но вы не можете иметь причудливую полосу загрузки или вращающийся круг. Чтобы получить это, вам нужно будет использовать более продвинутые методы, чтобы разбить весь расчет на несколько кадров, вычисляя только его части в каждом кадре.
Вы можете разделить функции следующим образом:
private function solveButtonClicked():void {
loadingText.visible = true;
}
private function enterFrame(e:Event):void {
if(loadingText.visible) solve();
}
private function solve():void {
solutionNumDes++;
solutionNumCounter = solutionNumDes;
for(var i:int=0;i<_size;i++)
solution[i] = 0;
resetBoard();
if(solveRec(0))
display();
trace("loading set to unvisible");
loadingText.visible = false;
trace("finised solving at queens");
}//solve