Частота кадров одного мувиклипа постепенно уменьшается со временем.Что может вызвать это?[Flash CS3] - PullRequest
0 голосов
/ 10 апреля 2010

Я создаю флэш-игру с ритмом. У меня есть цикл (в определенном кадре у меня есть gotoAndPlay) мувиклип, который содержит прокручиваемые заметки, которые повторяются в течение примерно трех минут. По мере продвижения уровня частота кадров видеоклипа начинает отставать и заикаться. Что касается мувиклипа, то никакие переменные или функции не вызываются, что могло бы вызвать это. Я понятия не имею, как это могло произойти. Также стоит упомянуть, что примечания представлены текстом (не растеризованный текст), если это имеет какое-либо значение. Что касается публикации моего кода, я думаю, что он будет слишком запутанным, чтобы стоить вашего времени. Я просто не понимаю, как частота кадров этого мувиклипа может упасть независимо от остальной части игры.

РЕДАКТИРОВАТЬ: Следуя совету Сэма, я нашел кусок кода, который замедляет мою игру.

if(_noteBar._decide)
        {
            if(_noteBar._correctHits == _noteBar._correctNumberHits)
            {
                _noteBar._totalCorrect = true;
            }

            else if(_noteBar._correctHits > 0) {}

            else
            {
                _noteBar._decrement = true;
            }
        }

Этот кусок кода запускает каждый кадр. Честно говоря, я не понимаю, как это может так сильно снизить частоту кадров. Я просто проверяю и присваиваю некоторые переменные. Кроме того, это очень важно для функционирования моей игры. Может быть, я проверяю переменные из другого класса?

Ответы [ 2 ]

1 голос
/ 10 апреля 2010

Попробуйте максимально удалить свой код (комментируя его), а затем медленно добавляйте его обратно, пока не найдете место, которое вызывает замедление.

0 голосов
/ 10 апреля 2010

Этот код определенно не выглядит так, как будто он может вызвать замедление. Сколько раз он запускается за кадр? Вы должны установить _noteBar._decide = false перед выходом из if? Можете ли вы добавить дополнительную проверку, чтобы убедиться, что она запускается только один раз за кадр? Во Flex это делается через invalidateProperties / commitProperties, но я не знаю эквивалента во Flash.

Код можно немного оптимизировать, но я сомневаюсь, что это изменит.

var noteBar = _noteBar;

if(noteBar._decide)
{
    va correctHits = noteBar._correctHits;
    if(correctHits == _noteBar._correctNumberHits)
    {
        _noteBar._totalCorrect = true;
    }
    else if(correctHits > 0) 
    {
    }
    else
    {
        noteBar._decrement = true;
    }
}
...