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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > Action script 2.0

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

Регистрация: Apr 2004
Адрес: Усть-Катав
Сообщений: 33
По умолчанию Корректный останов работы программы

Здравствуйте!

В моей программе работает некий цикл, при определённом условии происходит его зацикливание. Результатом этого является останов выполнения программы при прохождении 256 циклов. И что самое неприятное программа натурально зависает, невозможно совершение никаких действий с размещёнными в клипе компонентами и самопальными кнопками. Исключение составляют текстовые поля.

Что делать? Подскажите пожалуйста.

Старый 07.05.2004, 10:53
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 2  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Дело в том, что в Action Script наложено ограничение на уровень рекурсии - 255 повторов. Если уровень рекурсии превышает 255 уровней - происходит остановка скрпта. И только скрипта. Если так нужно обойти это ограничение попробуй динамически генерить новую функцию при пороге, например, 250 уровней и передавать ей управление
__________________
судью - на мыло, из игроков - вить веревки.

Старый 07.05.2004, 11:28
REDkii вне форума Посмотреть профиль Отправить личное сообщение для REDkii Посетить домашнюю страницу REDkii Найти все сообщения от REDkii
  № 3  
REDkii
 
Аватар для REDkii

Регистрация: Apr 2004
Адрес: Усть-Катав
Сообщений: 33
Нет, я не об этом.
Как сделать так чтобы после останова программы в результате этого действия, снова запустить её на выполнение.
Просто я никак не могу остановить этот цикл.

Старый 07.05.2004, 11:45
styx вне форума Посмотреть профиль Отправить личное сообщение для styx Найти все сообщения от styx
  № 4  
styx

Регистрация: Apr 2003
Сообщений: 243
Надо написать программу так, чтобы останова не происходило - то есть, чтобы не было такой рекурсии. Переделайте алгоритм.

Старый 07.05.2004, 15:16
REDkii вне форума Посмотреть профиль Отправить личное сообщение для REDkii Посетить домашнюю страницу REDkii Найти все сообщения от REDkii
  № 5  
REDkii
 
Аватар для REDkii

Регистрация: Apr 2004
Адрес: Усть-Катав
Сообщений: 33
Я попробую переделать алгоритм. Но тогда вопрос какими методами можно остановить выполнение цикла.

Старый 07.05.2004, 15:55
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 6  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
break
__________________
судью - на мыло, из игроков - вить веревки.

Старый 10.05.2004, 14:32
REDkii вне форума Посмотреть профиль Отправить личное сообщение для REDkii Посетить домашнюю страницу REDkii Найти все сообщения от REDkii
  № 7  
REDkii
 
Аватар для REDkii

Регистрация: Apr 2004
Адрес: Усть-Катав
Сообщений: 33
Ребята всё гораздо хуже
У меня примерно такой код.
on(relase){
function raz() {
i++;
dva();
}
function dva() {
raz();
}
}

И поехало! Как остановить то?

Старый 11.05.2004, 05:05
Diomas вне форума Посмотреть профиль Отправить личное сообщение для Diomas Найти все сообщения от Diomas
  № 8  
Diomas
 
Аватар для Diomas

Регистрация: Nov 2001
Адрес: spb.ru
Сообщений: 177
Убери лишнюю функцию:
Код:
on(relase){
	function raz() {
		i++;
		// код функции
		raz();
	}
}
Если у тебя ключевой момент здесь i++, то не используй рекурсию, используй цикл (while или что там тебе удобнее).

Старый 11.05.2004, 08:28
REDkii вне форума Посмотреть профиль Отправить личное сообщение для REDkii Посетить домашнюю страницу REDkii Найти все сообщения от REDkii
  № 9  
REDkii
 
Аватар для REDkii

Регистрация: Apr 2004
Адрес: Усть-Катав
Сообщений: 33
Конструкция должна остаться неизменной, так как в функции dva() так же есть блок кода который напрямую зависит от функции raz().

Старый 11.05.2004, 11:05
Dindin вне форума Посмотреть профиль Отправить личное сообщение для Dindin Посетить домашнюю страницу Dindin Найти все сообщения от Dindin
  № 10  
Dindin
 
Аватар для Dindin

Регистрация: Feb 2004
Адрес: на колокольне Любит: плеваться
Сообщений: 1,769
Отправить сообщение для Dindin с помощью ICQ
Код:
i = 0;
function raz() {
	
		if(i==16)
		{	
			return ;
		}
		i++;
		dva();
		
}
function dva() {
		raz();
}
raz ();
Вот тебе код. Размышляй, медитируй - и просветление придет
__________________
судью - на мыло, из игроков - вить веревки.

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

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

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


 


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


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