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

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

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

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
Question функция в функции и локальная переменная

всё - мозги мои текут - незнаю как решить сложную задачу. Точнее задача не сложная просто незнаю как её решить =)

смысл вот - у нас есть некая функция hodi (hod);
которая отнимает внутри себя число hod и запускает несколько функций своего же имени.

вот полный код
Код:
hod = 5;
hodi = function (hod) {
	trace (this.hod);
	this.hod--;
	if (this.hod>0) {
		trace ("1) хожу первым");
		hodi (this.hod);
	}
	if (this.hod>0) {
		trace ("2) хожу вторым");
		hodi (this.hod);
	}
};
hodi(hod);
так вот хочется чтобы эти 2 функции запускались одновременно по одинаковой переменной this.hod. А получается что сначала срабатывает первая функция и передаётся итоговое значение следущей , а т.к. this.hod стало меньше нуля - функция не запускается =(

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

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

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Наверное ты запутался в переменной объекта this.hod и локальной переменной hod в функции hodi.
Попробуй внутри функции везде убрать кейворд this . =)
З.Ы. Я страюсь избегать рекурсий. Довольно трудно понять что делает чужая рекурсия. Гораздо понятнее использовать циклы, и переполнения стека вызовов не будет.
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
пробовал - результат тот же =(

Старый 11.02.2007, 23:07
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 4  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Я не понял, почему под одним условием нельзя вызывать две функции ?
Код:
hod = 5;
hodi = function (hod) {
	trace (this.hod);
	this.hod--;
	if (this.hod>0) {
		trace ("1) хожу первым");
		hodi (this.hod);
		trace ("2) хожу вторым");
		hodi (this.hod);
	}
};
hodi(hod);
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
Код:
function walk(val)
{
	while(val>0)
	{
		trace ("1) хожу первым");
		hodi(hod);
		trace ("2) хожу вторым");
		hodi(hod);
		val--;
	}
}
hodi = function (hod) {
	trace('hod');
};
walk(5);
объясни, зачем рекурсия ?
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

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

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
всё гораздо сложнее чем кажется...
я просто упростил задачу а изначально всё это было сделано для создания игрового поля с расчётом кротчайшего пути =)
а функция как бы создаёт клетку и запускает себя на проверку соседних клеток =)

короче у нас типа есть 4 параметра , которые если совпадают то запускают функцию в соответствии значениям....

много объяснять короче
короче мне нужно как то как в моём примере использовать либо 2 IF либо CASE но чтобы значения не передавались ниже а гуляли только ВНУТРИ функции

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

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

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


 


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


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