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

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

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

Регистрация: Apr 2010
Сообщений: 97
Question Проблемы с циклом for

Подскажите, у меня цикл проверяет объекты на hitTest, но вместо всех 15 объектов, он проверяет только до первого хита. Как сделать что бы он проверил все 15?
Код AS1/AS2:
for(d=mob.length-15;d<=mob.length;d++){
		if(mob[d].hitTest(obj)){
 
			mob[d].hp-=dmg;
 
			}
		}
 
 
	}
Все элементы массива существуют!

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Скобка одна лишняя фигурная.
__________________
Идите первым!

Старый 20.08.2012, 17:34
stepa323 вне форума Посмотреть профиль Отправить личное сообщение для stepa323 Найти все сообщения от stepa323
  № 3  
Ответить с цитированием
stepa323
 
Аватар для stepa323

Регистрация: Apr 2010
Сообщений: 97
случайно захватил, в полной версии там все норм!

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

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

Я к тому, что в предъявленном участке кода все верно, цикл исполняется нормальное количество раз - 15, если длина массива 15.
Правда в условии цикла стоило бы написать так:
Код AS1/AS2:
for(d = 0; d < mob.length; d++)
__________________
Идите первым!

Старый 20.08.2012, 17:46
stepa323 вне форума Посмотреть профиль Отправить личное сообщение для stepa323 Найти все сообщения от stepa323
  № 5  
Ответить с цитированием
stepa323
 
Аватар для stepa323

Регистрация: Apr 2010
Сообщений: 97
В общем у меня вызывается функция по нажатию:
Код AS1/AS2:
_root.skill="";
_root.magic=function(skill){
	if(skill!=""){
		switch(_root.skill){
		case "light":
				_root.light=attachMovie("light","light",10000,{_x:_xmouse,_y:_ymouse});
				matack(obj=mouse,dmg=10)
				setInterval(removeMovieClip,2000,_root.light);break;
 
				case "earth":
				_root.earth=attachMovie("earth","earth",10001,{_x:_xmouse,_y:_ymouse});
				matack(obj=_root.earth,dmg=20)
				setInterval(removeMovieClip,4000,_root.earth);break;
 
		}
	}
}
 
 
function matack(obj,dmg){
sounds("thunder.wav");
	for(d=mob.length-15;d<=mob.length;d++){
		if(mob[d].hitTest(obj)){
 
			mob[d].hp-=dmg;
			hp=20/l_green[d+200].hp;
			l_green[d+200]._width=mob[d].hp*hp;
			if(mob[d].hp<=0)
			{
			blood[num_blood]=attachMovie("blood","blood"+num_blood,num_blood,{_x:mob[d]._x,_y:mob[d]._y});
			setInterval(remove,5000,obj=blood[num_blood]);
			num_blood+=1;
			mob[d].gotoAndPlay(8);
			mob[d].sp=0;
			setTimeout(remove,400,mob[d]);
			setTimeout(remove,400,l_green[d+200]);
			setTimeout(remove,400,l_red[d+100]);
			setTimeout(remove,600,_root.light);
			_root.kill+=1;
			_root.death+=1;
			_global.kill_score+=1;
			t_kill.text=kill;
			add_gold(gold=5);
 
			}
		}
 
 
	}
	_root.skill="";
 
 
}
Почему только до первого?
По нажатию клип охватывает несколько объектов, но засчитывает соприкосновение только с одним ближайшим по номеру записи в массиве объектом!

Добавлено через 16 часов 27 минут
Все нашел в чем ошибка, у меня obj заменялся другим значением в интервале
Код AS1/AS2:
setInterval(remove,5000,obj=blood[num_blood]);

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

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

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


 


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


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