IPB

Здравствуйте, гость ( Вход | Регистрация )

> Существует ли способ обойти ограничение глубины рекурсии в 256 итерраций?, второй action script
  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
Slam_Sergo
сообщение 2.07.2006 - 11:35
Сообщение #1


Новичок
*

Группа: Новичок
Сообщений: 2
Регистрация: 1.07.2006
Пользователь №: 466



Собственно пост!!!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов (1 - 9)
MustLive
сообщение 2.07.2006 - 15:57
Сообщение #2


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4828
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Slam_Sergo

Во флеше имеется такое ограничение - глубина рекурсии в 256 итераций. Сам с такой проблемой не сталкивался (практически не использовал во флеше рекурсии и не доводилось доходить до ограничения её глубины), но о проблеме доводилось слышать.

Могу порекомендовать следующие пути:

1) Используй несколько функций (аналогичных, но с разными именами). И проверяй (счётчик) на приближение к лимиту. Если в первой функции счётчик приблизился к 256, вызывай рекурсивно не эту функцию, а уже вторую, а из неё всё начинается сначала (она сама себя вызывает рекурсивно), пока её счётчик не дойдёт до лимита, а там вызывается первая.

Это поможет, если после вызова другой рекурсивной функции, флеш сбросит "свой" счётчик рекурсий, и тогда можно будет вызывать по 256 раз то одну, то другую функцию - и так сколько нужно раз. Если же флеш запоминает и никак не захочет сбрасывать счётчик рекурсий (после таких пропусков), то смотри п.2.

2) Сделать столько функций сколько нужно (по задумке) для рекурсий, каждая функция рассчитана на 256 вызовов. Как только лимит достигнут вызывается следующая. И так по цепочке. Функционал у функций идентичный, лишь имена различны и вызывается следующая функция по цепочке.


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Slam_Sergo
сообщение 3.07.2006 - 18:12
Сообщение #3


Новичок
*

Группа: Новичок
Сообщений: 2
Регистрация: 1.07.2006
Пользователь №: 466



Это отлично конечно. Но насколько я понимаю, флэш считает не только вхождения в рекурсию, но и вхождения в функции вызванные из других функций. И всё-таки смысл в этом есть, спасибо за ответ, попробую поковыряюсь.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 3.07.2006 - 20:08
Сообщение #4


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4828
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Пожалуйста.

Попробуй, всё должно получится.

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


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 4.07.2006 - 11:53
Сообщение #5


Активный участник
***

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



Боюсь, ничего из этого не получится. Это все по той простой причине что существует такой себе arguments.caller - ссылка на объект, вызвавший текущий. После вызова некой другой функции из данной та, другая, все равно поставится в ту же рекурсивную цепочку, так как она точно будет знать, кто ее вызвал. Попытки убить caller (присвоить значение null, к примеру) ни к чему не приводят - похоже, он обрабатывается еще до входа в тело функции =(
P.S. Vista rules =))


--------------------
прочь из моей головы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 16.03.2011 - 20:01
Сообщение #6


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1129
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Можно отредактировать тэг scriptLimits в swf-файле.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 20.03.2011 - 02:15
Сообщение #7


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4828
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Цитата
Можно отредактировать тэг scriptLimits в swf-файле.

Верно подметил, chingachgoog - можно отредактировать свойство MaxRecursionDepth в тэге scriptLimits swf-файла для задания нужной глубины рекурсии.

P.S.

Отредактировать данный тэг можно лишь если он есть smile.gif. А если его нет в swf-файле, то его можно добавить.


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chinaboyz
сообщение 7.04.2011 - 20:09
Сообщение #8


Новичок
*

Группа: Новичок
Сообщений: 2
Регистрация: 14.03.2011
Пользователь №: 10377



Сложновато как для моего понимания...
-------------
Причина редактирования: Реклама.


--------------------
Flashzone я тебя люблю!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 8.04.2011 - 13:10
Сообщение #9


Ветеран конференции
*****

Группа: Пользователь
Сообщений: 1129
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Надо установить flasm (для AVM1). Там этог тэг виден.
Для лучшего понимания надо скачать из сети главу 20 из книги Гурского ActionScript 2.0. Для профессионалов. Эта глава распространяется бесплатно в виде архива с doc-файлом.


--------------------
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 9.04.2011 - 00:29
Сообщение #10


Ветеран конференции
*****

Группа: Flash Zone Team
Сообщений: 4828
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Для AVM1 можно использовать flasm, а для AVM2 - yogda. И через эти дизассемблеры можно работать с тэгом scriptLimits.


--------------------
Best wishes & regards,
MustLive
Администратор сайта
http://mlfun.org.ua
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 13.05.2013 - 17:17