Просмотр полной версии : Локальный массив
Аспирант
03.12.2002, 10:57
Есть такой фрагмент:
on (release){
var x= new Array();
function withArray(a, b){
x[0]=a; x[1]=b;
//Дальнейшие операции по заполнению массива
}
withArray(1, 2);//Для примера
trace(x.length);
}
Output: undefined
Почему? Если писать trace внутри функции, все отлично работает
Спасибо
DeliMIter
03.12.2002, 11:17
Потому что когда ты пишешь
var x = new Array();
ты объявляешь ЛОКАЛЬНЫЙ (для онрелиза) массив. Если
а) ты уберешь "var" или
б) ты создашь массив снаружи (т.е. не в скрипте кнопки)
то тебе будет счастье.
Аспирант
03.12.2002, 12:29
Так и функция тоже описана внутри онрелиза и при создании массива никаких ошибок не выдается. Или функция внутри себя создает эти элементы и снаружи их не видно? Ведь по идее область видимости массива x - блок онрелиз. И функция в блоке онрелиз. Все должно друг друга видеть и понимать :)
Что не правильно?
DeliMIter
03.12.2002, 13:04
Не надо меня сердить :mad:
Ты сделал как я сказал, или ты теоретик и компилируешь тоже на бумажке? Пункт (а) берешь и пошел работать, а то что ТЫ думаешь, что ТЫ написал правильно, то как говориться "это вы так считаете".
Аспирант
03.12.2002, 13:56
Я, конечно, попробую, но вопрос так и остался открытым...
Оригинал написал(а) Аспирант
Я, конечно, попробую, но вопрос так и остался открытым...
:mad:
2Аспирант,
вопрос оч. даже закрыт....
т.к. дан полный ответт !.
voro_bej
03.12.2002, 14:12
Специально для аспирантов:
Инструкция по решению проблем
1. На панели задач нажмите кнопку "Пуск">"Завершение работы...">далее по своему усмотрению.
Аспирант
03.12.2002, 17:22
2lexass
То, что сказал DeliMIter, отнюдь не отвечает на вопрос, а лишь позволяет обойти проблему невидимости переменной в области видимости
2voro_bej
Это тоже не способ решения проблемы. Гораздо эффективней format c: /u
voro_bej
03.12.2002, 17:36
Слушай! Да я те в натуре без смеха грю. :D Перегрузи комп. У тя просто глюк.
DeliMIter
03.12.2002, 17:43
Запустил Аспирантовый код. Все работает. В натуре, удали свой линукс и поставь Винду.
llllllllll
03.12.2002, 17:44
Оригинал написал(а) DeliMIter
Потому что когда ты пишешь
var x = new Array();
ты объявляешь ЛОКАЛЬНЫЙ (для онрелиза) массив. Если
а) ты уберешь "var" или
б) ты создашь массив снаружи (т.е. не в скрипте кнопки)
то тебе будет счастье.
... и что за бред?
on (release){
var x= new Array();
function withArray(a, b){
x[0]=a; x[1]=b;
//Дальнейшие операции по заполнению массива
}
withArray(1, 2);//Для примера
trace(x.length);
}{
если это так запустить, тоесть повесить эвент на батон, а остальное в фрейм на таймлайне ..., то и будет UNDEFINED.
Если так то все пашет:
// на батон
on(press){
var x= new Array();
withArray(1, 2);
trace(x.length);
trace(x)
}
//в таймлайн
function withArray(a, b){
x[0]=a; x[1]=b;
}
Они все лежат в руте, и кнопка, и массив и функция?, VAR тут не при чем ...
DeliMIter
03.12.2002, 18:27
Проверил, признаю, бред. on (event) не считает себя ф-цией и его локальный переменные являются таковыми и для клипа.
Nox Noctis
03.12.2002, 21:49
Оригинал написал(а) DeliMIter
Проверил, признаю, бреда я все слыыышал а я все слыыышал ! :D :D
эттто надо записаааать.... :p
DeliMIter
04.12.2002, 12:19
Засунь линк в Favorites :)))) Будешь потом всем показывать :)))))
Аспирант
04.12.2002, 17:31
Господа!
Приношу свои извинения всем, втянутым в эту перепалку. После просмотра исходника более внимательно оказалось, что в действительности сначала trace(x.length), а потом уже заполнение массива.
Но на этом все только началось :) Попытка задействовать полученный массив в дальнейшем не принесла результата. Пришлось передавать его в качестве параметра использующей функции. Исходник всего этого безобразия вскоре появиться в разделе "Исходники". Следите за рекламой :)
Спасибо всем за проявленный интерес и высказанные замечания. Еще раз приношу свои извинения за не совсем корректный вопрос.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.