Flash: функция, определенная в ключевом кадре, повторно загружается в память при каждом посещении кадра? - PullRequest
0 голосов
/ 12 августа 2010

Во Flash Actionscript 3, если функция определена в кадре 1 флэш-анимации и циклы анимации, сохраняет ли она другую версию функции в памяти при каждом цикле.

кадр 1:

function blah() {
  var n = "yes";
  return n;
}

Если это так, рекомендуется проверить, запускается ли фрейм впервые, установив переменную и проверив ее существование, или это не проблема, потому что компилятор проверяет, чтобы убедиться, что функция еще не была определена?

кадр 1:

if (!status) {
  function blah() {
    var n = "yes";
    return n;
  }

  var status = "loaded";
}

1 Ответ

1 голос
/ 13 августа 2010

Существует большая вероятность того, что проигрыватель Flash Player создает «объект-обертку» для каждого ключевого кадра и что при воспроизведении определенного ключевого кадра он просто обращается к этому «экземпляру» ключевого кадра. Я почти уверен, что плеер не хранит новый экземпляр этой функции в памяти, это будет объем пространства, и тот факт, что вы можете вызвать функцию, объявленную в первом кадре из второго кадра, например, показывает, что функции из кадра, вероятно, являются стойкими. Кроме того, если учесть тот факт, что вы не можете изменить код из кадра из другого кадра, когда временная шкала повторно входит в этот кадр, содержимое будет таким же. Из небольшого теста, который я сделал, кажется, что игрок просто выполняет код фрейма каждый раз, когда входит в этот фрейм, и весь код на фрейме является глобальным для текущей временной шкалы. Я не много тестировал, поэтому могу ошибаться, но я почти уверен, что вы можете удалить переменную состояния, потому что она не будет работать, так как переменная состояния будет сброшена в false при запуске скрипта кадра.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...