Часть кода, которую вы разместили, прекрасно работает, когда я ее запускаю, так что я думаю, что ваша проблема должна быть в другом месте. Можете ли вы опубликовать больше вашего кода?
Кстати, ответ Росса предполагает, что есть проблема с областью видимости, но она немного сложнее ...
Неверно утверждать, что m_imageClips выходит за рамки: если вы не объявили m_imageClips (с оператором var
), прежде чем присвоить ему значение []
, тогда он будет объявлен автоматически.
Многие языки программирования требуют
переменные, которые будут объявлены перед данными
могут быть депонированы в них; Неспособность
Это может привести к ошибке.
ActionScript не такой строгий. Если мы
присвоить значение переменной, которая делает
не существует, переводчик создаст
новая переменная для нас.
- (Колин Мук, Actionscript the Definition Guide)
В этом случае он будет объявлен в рамках основной временной шкалы, поэтому он будет доступен как для функций doTheLoading()
, так и onLoadComplete()
. Следовательно, код работает так, как вы его показали.
Это также означает, что если вы хотите использовать решение Росса (с оператором return
и т. Д.), Вам нужно объявить m_imageClips как локальное по отношению к doTheLoading()
с помощью var
m_imageClips = [];
внутри этой функции. Хотя это может привести к удвоению, так как вы окажетесь в одном месте ...