Просмотр полной версии : Задать глобально значение ячейки массива
У меня есть массив
name_array[]
и объект
var visitors:LoadVars = new LoadVars();
на главной временной шкале. Я хотел создать двухмерный массив и задать значения ячеек при загрузке в
visitors()
данных.
visitors.onLoad = function() {
for (var i = 0; i<30; i++) {
name_array[i] = new Array();
for (var d = 0; d<8; d++) {
name_array[i][d] = attachMovie(...);
}
}
}
Только каждый новый массив и каждая новая ячейка создаются на то время, пока с ними работает функция. Я бы хотел создать этот двухмерный массив глобально. Я пробовал применять
_root
и
_global
, но всё получается точно так же.
Вы не правы, все новые элементы массива остаются при нем после выполнения функции
Нет, Kuruki, они правда удаляются оттуда. Во время работы функции их можно прочитать методом
trace()
, а после неё этот метод уже выводит "undefined".
Выложите исходник, желательно очищенный от всего неотносящегося к вопросу
CrazyFlasher
13.10.2009, 14:52
в каком месте объявляется name_array?
В самом начале кода, CrazyFlasher !
LoadVars.onLoad - асинхронная функция, вызывается после загрузки данных. Вы, скорее всего, трейсите массив до ее выполнения
Я проверяю ячейки его внутри обработчика
onLoad()
и после него, Kuruki. И внутри они доступны, а после обработчика они недоступны.
Может так понятнее будет..trace("before function");
visitors.onLoad = function() {
trace("function");
for (var i = 0; i<30; i++) {
name_array[i] = new Array();
for (var d = 0; d<8; d++) {
name_array[i][d] = attachMovie(...);
}
}
}
trace("after function");
скомпилируйте это код
Вот я использую
trace("function"); //Выводит _level0.(имя клипа)
и
trace("after function") //Выводит undefined
CrazyFlasher
13.10.2009, 22:39
идёт так:
trace("before function");
trace("after function");
trace("function");
//здесь массив получает объекты
После
trace("function");
массив получает объекты, CrazyFlasher ?
Строка function в окне output, говорит о том, что была вызвана функция visitors.onLoad, т.к. команда trace("function") находится именно в ней.
Трейсы в окне появляются с момента их вызова, сверху вниз в хронологическом порядке. Что у вас в окне output выводится? О чем вам это говорит?
CrazyFlasher
14.10.2009, 01:37
массив получает объекты, CrazyFlasher ?
да..вам же написали, что onLoad работает асинхронно...событие произойдёт, только когда загрузятся данные
Ничего себе! Это оказывается точно так и происходит. То есть output выводит
before function;
after function;
function;
Ну я думаю, что это говорит о том, что код после функции выполняется перед кодом самой функции. Да?
CrazyFlasher
14.10.2009, 12:53
блин...ну сколько можно разжёвывать...onLoad может произойти и через 10 секунд и через минуту и хоть когда...
btn.onPress
ведь срабатывает только когда вы тыкните на кнопку. Точно так же и другие обработчики событий срабатывают по какому-либо событию
Да, мне понятно! Только даже если проверять наличие ячеек массива в теле обработчика
onLoad()
output выводит
,,,,,
Только самый последний добавленный клип не удаляется. Я думаю, что те клипы, которые присоединились, удалились тогда, когда присоединился следующий клип. Это из-за этого в output запятые и между ними ничего нет (эти все ячейки пустые). А почему происходит так?
С глубинами чтонить не так сделали.
Спасибо, iNils! Именно с глубинами было не впорядке! Всем спасибо за помощь!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.