Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.10.2009, 14:37
Сникерс вне форума Посмотреть профиль Отправить личное сообщение для Сникерс Найти все сообщения от Сникерс
  № 1  
Ответить с цитированием
Сникерс

Регистрация: Mar 2008
Сообщений: 106
По умолчанию Неадекватное исполнение метода LoadVars.sendAndLoad()

У меня есть мой код, в нём циклично создаются пустые клипы, в которые циклично загружаются клипы из библиотеки. Потом они все разворачиваются под разными углами и проверяются на возможность выхода за пределы сцены. А потом запускаются. В одном пустом клипе могут быть несколько клипов. Метод
Код AS1/AS2:
LoadVars.sendAndLoad()
находится вне пределов кода цикла. И этот метод перестаёт работать, если итераций цикла больше 17:
Код AS1/AS2:
for(var i = 0; i<30; i++) {
   //Здесь создаются клипы и задаются их свойства
}
derevo.sendAndLoad(...) //Здесь это НЕ работает
Код AS1/AS2:
for(var i = 0; i<17; i++) {
   //Здесь создаются клипы и задаются их свойства
}
derevo.sendAndLoad(...) //Здесь это работает
Хотя даже в первом случае
Код AS1/AS2:
trace(derevo.sendAndLoad(...)); //Выводит true
Вы не могли бы мне это объяснить?


Последний раз редактировалось Сникерс; 25.10.2009 в 14:39. Причина: Надо было изменить цифру
Старый 25.10.2009, 15:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Маловато кода... непонятно.

Старый 25.10.2009, 15:05
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 3  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Что-то вас не понятно. Сперва вы пишите, что у вас "циклично загружаются клипы из библиотеки", а в разрозненных строчках вашего вопроса речь идет о LoadVars и его методах.
Приведите-ка полный кусок кода. Да и вопрос уточните.

Старый 25.10.2009, 16:01
Сникерс вне форума Посмотреть профиль Отправить личное сообщение для Сникерс Найти все сообщения от Сникерс
  № 4  
Ответить с цитированием
Сникерс

Регистрация: Mar 2008
Сообщений: 106
Код AS1/AS2:
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");
}
Здесь
Код AS1/AS2:
derevo.sendAndLoad(...);
не работает, но если в условии самого первого цикла вбить
Код AS1/AS2:
for(var i = 0; i<17; i++) {
...
}
, то "sendAndLoad" заработает. Из-за чего это происходит?


Последний раз редактировалось Сникерс; 25.10.2009 в 17:26. Причина: Надо было изменить некоторые данные цикла
Старый 25.10.2009, 23:04
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Почему у вас вызов derevo.sendAndLoad(....); записан внутри его же обработчика onLoad?
Код AS1/AS2:
var derevo:LoadVars = new LoadVars();
var resultDerevo:LoadVars = new LoadVars();
derevo.load("../dermo.txt");
derevo.onLoad = function() {
...
	derevo.sendAndLoad("FlashDataHandler.ashx",resultDerevo,"GET");
}
Вот это действительно неадекватное исполнение методов LoadVars.

Старый 26.10.2009, 00:35
Сникерс вне форума Посмотреть профиль Отправить личное сообщение для Сникерс Найти все сообщения от Сникерс
  № 6  
Ответить с цитированием
Сникерс

Регистрация: Mar 2008
Сообщений: 106
Да там всё нормально. После загрузки и исполнения кода обновлённые данные отправляются на серверную страницу и ответ загружается в другую переменную и не может быть рекурсии. А ведь "onLoad" - это асинхронная функции и она будет выполняться в самом конце. Вне обработчика "onLoad" все данные переменной "derevo" были бы недоступны.


Последний раз редактировалось Сникерс; 26.10.2009 в 19:23. Причина: Надо было написать другую букву
Старый 26.10.2009, 01:00
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Script time limit скорее всего превышается... Оптимизируйте свой код.
Ссылку на текущий мувиклип ("name"+i+"_mc" который) хотя-бы в переменную записывайте что-ли. Посчитайте сколько у вас лишних вычислений получается.


Последний раз редактировалось udaaff; 26.10.2009 в 01:03.
Старый 26.10.2009, 01:51
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Сникерс, а вы в курсе, что у вас все переменные, полученные в derevo после этой загрузки
Код AS1/AS2:
derevo.load("../dermo.txt");
попадают вновь в GET-запрос по новой даже без явного присвоения типа
Код AS1/AS2:
derevo.name1 = "bobik";
?
То есть все вот эти derevo["name"+...] вновь образуют пары "переменная=значение" и вновь отправляются на сервер уже при derevo.sendAndLoad. Сколько у вас их там, 30 пар? И сама onLoad тоже уходит на сервер в виде строки
Код:
onLoad=%5Btype%20Function%5D
Я бы все-таки разделил экземпляры LoadVars. Или вы так задумали?


Последний раз редактировалось mooncar; 26.10.2009 в 02:01.
Старый 26.10.2009, 14:49
Сникерс вне форума Посмотреть профиль Отправить личное сообщение для Сникерс Найти все сообщения от Сникерс
  № 9  
Ответить с цитированием
Сникерс

Регистрация: Mar 2008
Сообщений: 106
Точно так, udaff. Я объявил такую переменную и теперь метод "sendAndLoad" работает доже после 21-ой итерации цикла. Только как теперь мне ещё больше упростить код, там по-моему в остальном это нельзя сделать. А может быть изменить значение "Script time limit" и сделать его больше?

Да, mooncar, это правда, я знал, что туда отправляются все пары. Из этого кадра мне нужно отправить только "derevo.num". Я подумал, что буду отправлять всё вместе, потому что всё равно остальное не будет изменяться. Пока я тестирую на двух объектах, то есть пока у меня отправляется 8 пар "имя-значение", но всего их может быть до 120-ти. А пока создаются только 2 клипа, но с изменением количества итераций цикла "sendAndLoad" не работает. udaff оказался прав и мне надо оптимизировать мой код, только я не знаю что ещё сделать. Может быть изменить значение "Script time limit"?

Старый 26.10.2009, 15:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 10  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
1. Разделите экземпляры LoadVars. Для каждого действия все-таки лучше свой экземпляр.
2. Используйте не GET, а POST. Все-таки в адресной строке передавать такое количество данных как-то нехорошо - 120 пар, как вы говорите.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.