Просмотр полной версии : пропадают значения массива после onEnterFrame
FlashRus
11.09.2010, 01:15
var m:Array = new Array()
function loadtch() { //загрузка инф о точках и создание объекктов
var i:Number=0;
onEnterFrame = function() {
m[i]=attachMovie("tchnum","tchnum"+i,i)
if (i==1) {
delete onEnterFrame
}
i++;
trace(m)
}
i=0;
trace(m)
}
первый trace выводит
_level0.tchnum0
_level0.tchnum0,_level0.tchnum1
второй trace, что после onEnterFrame ничего не выводит. Куда деваются значения???
Как не выводит?
Выводит. Пустую строку, то есть пустой пока массив, поскольку на момент второго трейса событие onEnterFrame еще не произошло:
здесь пустая строка, присмотритесь к выводу в output
_level0.tchnum0
_level0.tchnum0,_level0.tchnum1
А зачем все это делать через EnterFrame? Функцию в функции не стоит определять. Приаттачить мувики в цикле вас почему не устроит?
Вторая запись i=0 абсолютна бессмысленна, после первого же onEnterFrame тут i не будет равна нулю никогда. К тому же i видна только внутри loadtch и умирает, как только становится равной 1, поскольку onEnterFrame убивается, а loadtch уже отработана.
В общем, все не так. Что вы хотите получить?
FlashRus
11.09.2010, 01:34
Цикл мне не подойдёт.
Но как мне кажеться второй trace выполняется после завершения работы onEnterFrame...?
Нет, до. С чего бы это? Порядок выполнения кода - почти мгновенно по сравнению с Fps.
А массив у вас живой остается.
Допишите ниже и убедитесь:
setTimeout(showArray, 1000);
function showArray ()
{
trace(m);
}
FlashRus
11.09.2010, 01:41
Спасибо, работает. А чем плох вызов onEnterFrame внутри функции?
Косяки с видимостью. К ней никак нельзя будет обратиться снаружи общей функции, если возникнет необходимость.
FlashRus
11.09.2010, 01:52
Большое спасибо. Во всём разобрался.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.