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

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

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

Регистрация: Oct 2002
Сообщений: 22
По умолчанию еще раз про движение

Господа, на прошлое сообщение никто не ответил, поэтому делаю репост. Если вопрос очень ламерский или тупой, то хоть скажите об этом....

Есть 2 объекта s1 и s2. Объект s2 должен двигаться к объекту s1.
Пишу примерно следующее:

onClipEvent (enterFrame) {
dx = _root.s1._x - _root.s2._x
dy = _root.s1._y - _root.s2._y
if (dx<0) sG1 = 270; else sG1 = 90
rotGR = 180/Math.PI * Math.atan (dy/dx)
_root.s2._x+=Math.cos(rotGR);
_root.s2._y+=Math.sin(rotGR);
_root.s2._rotation = sG1 + rotGR
}

Все работает, пока s1 статичен. Как только s1 начинает двигаться, s2 начиинает совершать вращательные движения на месте. Никак не могу разобраться почему?
Пример *.fla заатачил.

Старый 16.11.2002, 11:51
tsep вне форума Посмотреть профиль Отправить личное сообщение для tsep Найти все сообщения от tsep
  № 2  
tsep

Регистрация: Oct 2002
Сообщений: 22
По умолчанию что-то не атачится с первого раза пример

что-то не атачится с первого раза пример
Вложения
Тип файла: zip attachment.zip (2.4 Кб, 113 просмотров)

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

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Вставь в клип "s2" следующий код:

Код:
onClipEvent (load) {
	k = 0.002;
	decay = 0.96;
}
onClipEvent (enterFrame) {
    dx = _root._xmouse-_x;
    dy = _root._ymouse-_y;
           if (dx>0 && dy>0) {
		quad = 4;
	}
	if (dx<0 && dy>0) {
		quad = 1;
	}
	if (dx<0 && dy<0) {
		quad = 2;
	}
	if (dx>0 && dy<0) {
		quad = 3;
	}
	abs_x = Math.abs(dx);
	abs_y = Math.abs(dy);
	tg = abs_y/abs_x;
	_root.sG1 = Math.atan(tg)*180/Math.PI;
	if (quad == 1) {
		angle = 90-_root.sG1;
	}
	if (quad == 2) {
		angle = 90+_root.sG1;
	}
	if (quad == 3) {
		angle = 270-_root.sG1;
	}
	if (quad == 4) {
		angle = 270+_root.sG1;
	}
	_rotation = angle-180;
	x = _x;
	y = _y;
	mx = _root._xmouse;
	my = _root._ymouse;
	disx = math.abs(x-mx);
	disy = math.abs(y-my);
	xmov = k*(mx-x)+decay*xmov;
	ymov = k*(my-y)+decay*ymov;
	_x = xmov+x;
	_y = ymov+y;
}
Надеюсь, это поможет.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

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

Регистрация: Aug 2001
Сообщений: 4,121
2sergwizard
гоооосподи... =))
это конечно могучий код, но зачем так так вот сразу человека по голове ?

всего-то спрашивали про движение из пункта А в пункт Б =)

и к тому же громоздко как-то, тебе не кажется ?
тут конечно кому как нравится писать, но я бы написал то же самое:
Код:
onClipEvent (load) {
	k = 0.002;
	decay = 0.96;
	rad = 180/Math.PI;
}
onClipEvent (enterFrame) {
	mx=_root._xmouse
	my=_root._ymouse;
	dx = mx-_x
	dy = my-_y
	_rotation = Math.atan(dy/dx)*rad+180*(mx<_x);
	xmov = k*dx+decay*xmov;
	ymov = k*dy+decay*ymov;
	_x = xmov+_x;
	_y = ymov+_y;
}
попроще будет, правда ? =)
по-моему незачем делать лишние переменные, дублирующие свойства, до которых и так можно добраться написав всего две буквы =)
и к тому же ты сам создаешь себе работу: сначала берешь модуль, а потом выясняешь что же за угол этот модуль предатавляет =)

2tsep
файлик твой не открывается...

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

Регистрация: Aug 2001
Сообщений: 4,121
хм... открылся файлик...

в принципе в предыдущих постах все написано, но для особо одаренных вот исправленная версия =)
Вложения
Тип файла: zip pr1.zip (2.7 Кб, 137 просмотров)

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

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Nox, ну не будь таким строгим :-) Я это выцарапал из своего старого исходника. Что первое под руку подвернулось, то и дал. Я еще подумал, что Tsep явно какую-то игрушку стрелялку делает, и это ему поможет. А потом, ну кто ж с тобой потягается насчет кодов? Это я без шуток.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

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

Регистрация: Aug 2001
Сообщений: 4,121
ну ладно, ладно... спасибо канеш...

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


Последний раз редактировалось Nox Noctis; 17.11.2002 в 23:03.
Старый 18.11.2002, 18:36
Max N Chubin_ вне форума Посмотреть профиль Отправить личное сообщение для Max N Chubin_ Найти все сообщения от Max N Chubin_
  № 8  
Max N Chubin_
 
Аватар для Max N Chubin_

Регистрация: Nov 2001
Адрес: Moscow, Russia
Сообщений: 720
Отправить сообщение для Max N Chubin_ с помощью ICQ
Thumbs up хе хе хе

2 Nox Noctis:
а можно еще немножко упростить??? можно? можно?
вот строчку заменить:

_rotation = Math.atan(dy/dx)*rad+180*(mx<_x);

на

_rotation = Math.atan2(dy,dx)*rad;

__________________
Max.

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

Регистрация: Aug 2001
Сообщений: 4,121
уговорил =)

я по инерции всегда atan пишу =)
если не прогуливать математику в восьмом классе, то можно узнать массу интересного... например, что atan возвращает значания от -П/2 до П/2 =)) если это знать, то без разницы как писать в принципе...

можно байткоды посмотреть - я думаю атан2 так и реализован - сначала арктангенс а потом плюс 180 при отрицательной ординате =)

Старый 18.11.2002, 19:21
Max N Chubin_ вне форума Посмотреть профиль Отправить личное сообщение для Max N Chubin_ Найти все сообщения от Max N Chubin_
  № 10  
Max N Chubin_
 
Аватар для Max N Chubin_

Регистрация: Nov 2001
Адрес: Moscow, Russia
Сообщений: 720
Отправить сообщение для Max N Chubin_ с помощью ICQ
Thumbs down ууууууууууу

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

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

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

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


 


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


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