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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > Общие вопросы

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 10.09.2002, 12:27
Useless вне форума Посмотреть профиль Отправить личное сообщение для Useless Посетить домашнюю страницу Useless Найти все сообщения от Useless
  № 11  
Useless

Регистрация: Mar 2001
Адрес: всё, отжился...
Сообщений: 1,024
Отправить сообщение для Useless с помощью ICQ
Мысля пришла по поводу массива: передавать его одной строкой, разделяя, скажем, запятыми (или любым другим символом). Потом из этой строки 'str' делается массив 'arr' таким образом:
Код:
arr = str.split(",");
В скобках - символ-разделитель.
__________________
Work not wolf - in forest no run

Старый 10.09.2002, 13:58
vpr вне форума Посмотреть профиль Отправить личное сообщение для vpr Найти все сообщения от vpr
  № 12  
vpr

Регистрация: Sep 2002
Сообщений: 16
По умолчанию Про разделение строки запятыми...

Собственно, я так и делаю - передаю во флеш строку, в которой эелементы массива разделены, но не запятыми, а парой символов, например ${. Любым печатаемым символом, в т.ч. запятой, нельзя, т.к. этот символ обязательно встретится в тексте, тогда split выдаст не то что нужно... К сожалению, насколько я знаю, во флеше нельзя разделить строку на массив, если разделителем элементов является более одного символа... Но и это не самая главная проблема. Самая большая проблема - объем данных, т.к. когда флеш разбирает большую строку на двумерный массив, в котором элементы столбцов являются строками, то, например, если во флеш передать массив из трех столбцов и 100 строк, то все работает, а 300 строк уже не переваривает - говорит что зациклился...

Старый 10.09.2002, 14:56
Useless вне форума Посмотреть профиль Отправить личное сообщение для Useless Посетить домашнюю страницу Useless Найти все сообщения от Useless
  № 13  
Useless

Регистрация: Mar 2001
Адрес: всё, отжился...
Сообщений: 1,024
Отправить сообщение для Useless с помощью ICQ
Точно нельзя двумя символами? Обидно. А если табом ("\t")?

А как ты двумерный массив распарсиваешь? Может, разбить по кадрам, как я выше предлагал? Или слать по частям по сотне строк каждая?

В какой версии флеша работаешь? Судя по Генератору - в пятёрке? Попробуй эмыкс - он, насколько я знаю, не столь критичен к разбору строк, да и возможностей поболе.
__________________
Work not wolf - in forest no run

Старый 10.09.2002, 16:09
vpr вне форума Посмотреть профиль Отправить личное сообщение для vpr Найти все сообщения от vpr
  № 14  
vpr

Регистрация: Sep 2002
Сообщений: 16
По умолчанию Проверил...

Если использовать \t, то можно использовать split, но я сейчас проверил - если елементы одномерного массива - строки длиной 15 символов и в массиве 300 строк, то при выполнении split флеш задумывается, а потом предлагает прервать скрипт...

Старый 10.09.2002, 21:12
Useless вне форума Посмотреть профиль Отправить личное сообщение для Useless Посетить домашнюю страницу Useless Найти все сообщения от Useless
  № 15  
Useless

Регистрация: Mar 2001
Адрес: всё, отжился...
Сообщений: 1,024
Отправить сообщение для Useless с помощью ICQ
Н-да. Хорошая вещь - флешь

Ну тогда либо с сервера отдавать по частям, либо - совсем уж тупо - выдавать: N, item1, item2, ..., itemN. Хотя хрен его знает, может он и от этого перенапряжётся...
__________________
Work not wolf - in forest no run

Старый 11.09.2002, 20:56
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 16  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
По умолчанию Re: Проверил...

Цитата:
Оригинал написал(а) vpr
при выполнении split флеш задумывается, а потом предлагает прервать скрипт...
а если так:
Код:
String.prototype.split = function(d) {
	if (d != null) {
		var r = new Array();
		var size = this.length;
		var c = 0;
		var n = 0;
		if (d != "") {
			for (var i = 0; i<=size; ++i) {
				if (substring(this, i+1, 1) == d) {
					r[n] = substring(this, c+1, i-c);
					c = i+1;
					++n;
				}
			}
			if (c != i) {
				r[n] = substring(this, c+1, i-c);
			}
		} else {
			for (var i = 0; i<size; ++i) {
				r[i] = substring(this, i+1, 1);
			}
		}
	} else {
		r = new Array(this.toString());
	}
	return (r);
};
...сплит работает ЗНАЧИТЕЛЬНО быстрее оригинального...
может это и не спасет, но мертвым еще никогда не было плохо от припарок

зы: взято на одном умном сайте хотя все и так понятно, но до этого еще нужно догадаться

Старый 12.09.2002, 11:00
vpr вне форума Посмотреть профиль Отправить личное сообщение для vpr Найти все сообщения от vpr
  № 17  
vpr

Регистрация: Sep 2002
Сообщений: 16
По умолчанию Проверил

Nox Noctis - проверил... Результаты очень интересные !
Работоспособность присланного скрипта зависит от нескольких причин... Во-первых, зависит от общей длины разбиваемой на массив строки и от количества элементов массива, на которые делится строка. Например, если строка длиной примерно 18 кВ, то ее можно поделить на массив в 1000 элементов, если длина каждого элемента примерно 10-15 байт, если длина елемента массива около 20 байт, то соответственно элементов массива будет 500... Стандартный же split сваливается, если во флеш передавать строку длиной около 5 кВ и разбивать ее на массив примерно в 275 элементов. Но что интересно. Результат сильно зависит от компьютера, на котором все это проверялось. Приведенные цифры получены на 4-м пне с частотой около 1800 и ОЗУ 256 М. На третьем пне с частотой 500 и ОЗУ 512 результат значительно ниже.
И еще одно наблюдение - на 4-ом пне разница в скорости работы стандартного split и указанного алгоритма достигает нескольких раз, а вот на третьем пне эту разницу почувствовать не удалось...

Старый 12.09.2002, 13:46
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 18  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
хмм... у меня простенький п3-733мхз и разницу видно невооруженным плеером

ну да ладно... главное - стандартный сплит нигде этот вариант не обходит...
...так что в любом случае - зачем платить больше, если результат точно не хуже ?

Старый 12.09.2002, 14:23
vpr вне форума Посмотреть профиль Отправить личное сообщение для vpr Найти все сообщения от vpr
  № 19  
vpr

Регистрация: Sep 2002
Сообщений: 16
По умолчанию еще уточнение...

На моем третьем пне разница в длине строки, когда после стандартного split сваливается и нестандартный, составила всего лишь около 100 байт, даже чуть меньше. Мне это кажется странным, но чем объяснить - не знаю... Тем более, что на четвертом пне - разница очень значительная, по времени работы - в разы... Но к сожалению, и нестандартный split недостаточно много может обработать... Я работаю с базами данных и специфика такая, что часто запросы возвращают много строк - иногда доходит до одной-двух-трех тысяч... Конечно, если я все-таки буду делать интерфейс на флеше, придется в серверном приложении учитывать эти особенности флеша... Как я уже писал - пытался попробовать Macromedia Generator - там свои заморочки... Вообще непонятно, на какой сервер его ставить, в off-line есть свои проблемы, а в on-line попробовать не могу...

Старый 12.09.2002, 14:32
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 20  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
ну так нужно доработать эту штуковину :)
там два цикла фор - вот они убивают плеер...
значит нужно сделать так, чтобы по истечении определенного времени работы в одном кадре цикл прерывался, пропускал кадр, а потом продолжал работу с того же места...

в пятерке это можно сделать повесив онКлипЕвент(ентерфрейм) со следилкой на клип какой-нить... просто гетТаймером замеряем сколько прошло милисекунд, добавляем в цикл проверку времени (про фреймрейту посчитать максимально допустимое время), сохранием параметры при выходе (если нужно), и в следующем кадре вызываем сплит снова с сохраненными параметрами...

в МХ проще - можно назначать функцию онЕнтерфрейм - но в остальном то же самое...
...это не так и сложно реализовать... если нужно :)

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

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

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


 


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


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