![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 106
|
У меня есть мой код, в нём циклично создаются пустые клипы, в которые циклично загружаются клипы из библиотеки. Потом они все разворачиваются под разными углами и проверяются на возможность выхода за пределы сцены. А потом запускаются. В одном пустом клипе могут быть несколько клипов. Метод
находится вне пределов кода цикла. И этот метод перестаёт работать, если итераций цикла больше 17: for(var i = 0; i<30; i++) { //Здесь создаются клипы и задаются их свойства } derevo.sendAndLoad(...) //Здесь это НЕ работает for(var i = 0; i<17; i++) { //Здесь создаются клипы и задаются их свойства } derevo.sendAndLoad(...) //Здесь это работает Вы не могли бы мне это объяснить? Последний раз редактировалось Сникерс; 25.10.2009 в 14:39. Причина: Надо было изменить цифру |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Маловато кода... непонятно.
|
|
|||||
|
Модрон-ветеринар
|
Что-то вас не понятно. Сперва вы пишите, что у вас "циклично загружаются клипы из библиотеки", а в разрозненных строчках вашего вопроса речь идет о LoadVars и его методах.
Приведите-ка полный кусок кода. Да и вопрос уточните. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 106
|
var derevo:LoadVars = new LoadVars(); var resultDerevo:LoadVars = new LoadVars(); derevo.load("../dermo.txt"); derevo.onLoad = function() { for (var i = 0; i<30; i++) { _root.createEmptyMovieClip("name"+i+"_mc",_root.getNextHighestDepth()); for (var d = 0; d<8; d++) { _root["name"+i+"_mc"].attachMovie(derevo["name"+(i+1)].charAt(d)+"clip","clip"+d,d+1+(8*i),{_x:0+30*d, _y:0}); } _root["name"+i+"_mc"]._x = derevo["name"+(i+1)+"_x"]; _root["name"+i+"_mc"]._y = derevo["name"+(i+1)+"_y"]; _root["name"+i+"_mc"]._rotation = derevo["rotation"+(i+1)]; for (d=10; d<1015; d++) { while (_root["name"+i+"_mc"].hitTest(d, 50)) { _root["name"+i+"_mc"]._y += 1; } while (_root["name"+i+"_mc"].hitTest(d, 718)) { _root["name"+i+"_mc"]._y -= 1; } } for (d=50; d<719; d++) { while (_root["name"+i+"_mc"].hitTest(10, d)) { _root["name"+i+"_mc"]._x += 1; } while (_root["name"+i+"_mc"].hitTest(1014, d)) { _root["name"+i+"_mc"]._x -= 1; } } } _root.onEnterFrame = function() { for (var i = 0; i<30; i++) { for (var d = 0; d<8; d++) { eval("name"+i+"_mc.clip"+d).play(); } } delete this.onEnterFrame; }; derevo.num = Number(visitors.num)+1; derevo.name1 = "bobik"; derevo.sendAndLoad("FlashDataHandler.ashx",resultDerevo,"GET"); } не работает, но если в условии самого первого цикла вбить , то "sendAndLoad" заработает. Из-за чего это происходит? Последний раз редактировалось Сникерс; 25.10.2009 в 17:26. Причина: Надо было изменить некоторые данные цикла |
|
|||||
|
Модрон-ветеринар
|
Почему у вас вызов derevo.sendAndLoad(....); записан внутри его же обработчика onLoad?
Вот это действительно неадекватное исполнение методов LoadVars. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 106
|
Да там всё нормально. После загрузки и исполнения кода обновлённые данные отправляются на серверную страницу и ответ загружается в другую переменную и не может быть рекурсии. А ведь "onLoad" - это асинхронная функции и она будет выполняться в самом конце. Вне обработчика "onLoad" все данные переменной "derevo" были бы недоступны.
Последний раз редактировалось Сникерс; 26.10.2009 в 19:23. Причина: Надо было написать другую букву |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Script time limit скорее всего превышается... Оптимизируйте свой код.
Ссылку на текущий мувиклип ("name"+i+"_mc" который) хотя-бы в переменную записывайте что-ли. Посчитайте сколько у вас лишних вычислений получается. Последний раз редактировалось udaaff; 26.10.2009 в 01:03. |
|
|||||
|
Модрон-ветеринар
|
Сникерс, а вы в курсе, что у вас все переменные, полученные в derevo после этой загрузки
попадают вновь в GET-запрос по новой даже без явного присвоения типа
?
То есть все вот эти derevo["name"+...] вновь образуют пары "переменная=значение" и вновь отправляются на сервер уже при derevo.sendAndLoad. Сколько у вас их там, 30 пар? И сама onLoad тоже уходит на сервер в виде строки Я бы все-таки разделил экземпляры LoadVars. Или вы так задумали? Последний раз редактировалось mooncar; 26.10.2009 в 02:01. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 106
|
Точно так, udaff. Я объявил такую переменную и теперь метод "sendAndLoad" работает доже после 21-ой итерации цикла. Только как теперь мне ещё больше упростить код, там по-моему в остальном это нельзя сделать. А может быть изменить значение "Script time limit" и сделать его больше?
Да, mooncar, это правда, я знал, что туда отправляются все пары. Из этого кадра мне нужно отправить только "derevo.num". Я подумал, что буду отправлять всё вместе, потому что всё равно остальное не будет изменяться. Пока я тестирую на двух объектах, то есть пока у меня отправляется 8 пар "имя-значение", но всего их может быть до 120-ти. А пока создаются только 2 клипа, но с изменением количества итераций цикла "sendAndLoad" не работает. udaff оказался прав и мне надо оптимизировать мой код, только я не знаю что ещё сделать. Может быть изменить значение "Script time limit"? |
|
|||||
|
Модрон-ветеринар
|
1. Разделите экземпляры LoadVars. Для каждого действия все-таки лучше свой экземпляр.
2. Используйте не GET, а POST. Все-таки в адресной строке передавать такое количество данных как-то нехорошо - 120 пар, как вы говорите. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|