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

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

Результаты опроса: Обязательно нужна тригонометрия для решения этой проблемы?
Да 4 66.67%
Нет 2 33.33%
Голосовавшие: 6. Вы ещё не голосовали в этом опросе

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

Регистрация: Jul 2009
Адрес: Саратов
Сообщений: 229
Отправить сообщение для KirAmp с помощью ICQ
По умолчанию Передвижение MovieClip по вектору

Здравствуйте, столкнулся с небольшой проблемой, которую впервые не смог решить сам...
Дело в том что мне надо переместить объект до определенной точки) но проблема в том что он перемещается по координатам (x y) а не по прямой линии (вектору).
Пожалуйста помогите! Напишите программу с помощью которой любой объект будет перемещаться из одной точки в любую другую по прямой линии (вектору)
Код AS1/AS2:
//У МЕНЯ СЕЙЧАС ТАК
if (this[select]._x<grib_x) {
	this[select]._x += 10;
}
if (this[select]._y>grib_x) {
	this[select]._x -= 10;
}
if (this[select]._y<grib_y) {
	this[select]._y += 10;
}
if (this[select]._y>grib_y) {
	this[select]._y -= 10;
}


Последний раз редактировалось KirAmp; 06.02.2010 в 16:20.
Старый 06.02.2010, 17:16
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Почему бы тебе не попробовать Tween классы?
Но можно и так:
функия go принимает параметры
1)какой клип перемещать
2)скорость передвижения
3)куда по X
4)куда по Y
-------------------------
Например в следующем коде клип с именем clip будет двигаться к мышке в одинаковой скоростью.

Код AS1/AS2:
_root.onEnterFrame = function() {
	go(clip,5,_xmouse,_ymouse);
};
function go(obj, step, targetX, targetY) {
	d = Math.sqrt(Math.pow(targetY - obj._y, 2) + (Math.pow(targetX - obj._x, 2)));
	y = targetY - obj._y;
	x = targetX - obj._x;
	sin = y / d;
	cos = x / d;
	if (d > step) {
		obj._x += cos * step;
		obj._y += sin * step;
	} else {
		obj._x = targetX;
		obj._y = targetY;
	}
}

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Смысл устраивать голосование по вопросу на который дается однозначный ответ?

Код AS1/AS2:
onEnterFrame = onEnterFrameHandler;
var v:Number = 5;
 
function onEnterFrameHandler():Void
{
        var dx:Number = _xmouse - mc._x;
        var dy:Number = _ymouse - mc._y;
        var rad:Number = Math.atan2(dy, dx);
 
        mc._x += v * Math.cos(rad)
        mc._y += v * Math.sin(rad);
        mc._rotation = 180 * rad / Math.PI;
}

Старый 06.02.2010, 22:11
KirAmp вне форума Посмотреть профиль Найти все сообщения от KirAmp
  № 4  
Ответить с цитированием
KirAmp
Banned

Регистрация: Jul 2009
Адрес: Саратов
Сообщений: 229
Отправить сообщение для KirAmp с помощью ICQ
Спасибо огромное! С детства не дружу с тригонометрией

Старый 30.06.2010, 06:48
wormaster вне форума Посмотреть профиль Отправить личное сообщение для wormaster Найти все сообщения от wormaster
  № 5  
Ответить с цитированием
wormaster

Регистрация: Jun 2010
Сообщений: 2
Каким образом возможно реализовать привязку таскаемого объекта к линии. То есть нечто что можно потаскать мышкой(скроллер) и оно должно перемещаться по прямой но не вертикальной или горизонтальной, а диагональной.

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

Регистрация: Feb 2008
Сообщений: 560
Цитата:
Сообщение от wormaster Посмотреть сообщение
Каким образом возможно реализовать привязку таскаемого объекта к линии. То есть нечто что можно потаскать мышкой(скроллер) и оно должно перемещаться по прямой но не вертикальной или горизонтальной, а диагональной.
Как вариант - разместить прозрачный мувик под/над нужным, повесить onPress, onRelease, onReleaseOutside на него, на событии onMouseMove отрисовывать нужный мувик в расчетной позиции, относительно положения прозрачного мувика. Можно прозрачному мувику задать границы перемещения (прямоугольник). В событиях onRelease, onReleaseOutside позиционировать прозрачный мувик на место нашего.

Старый 02.07.2010, 00:10
Maxio вне форума Посмотреть профиль Отправить личное сообщение для Maxio Посетить домашнюю страницу Maxio Найти все сообщения от Maxio
  № 7  
Ответить с цитированием
Maxio

Регистрация: Mar 2004
Адрес: Dnepr, Ukraine
Сообщений: 30
а как бы кто сделал, если бы надо было сделать движение непрямолинейное?
например, по траектории кривой (по-моему, 2го порядка, не помню), которые позволяет рисовать as2 метод - curveTo.

Есть клип, начальная точка, конечная, траектория между ними описывается кривой, параметры которой вы знаете (анкор известен) - кто бы к какой идее обратился?

Старый 02.07.2010, 00:15
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 8  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Я бы сделал так как написал выше, если формула кривой известна.

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

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
А если кривую разбить на пикселы, внести их в массив и уже по массиву двигаться?

Старый 02.07.2010, 12:27
Maxio вне форума Посмотреть профиль Отправить личное сообщение для Maxio Посетить домашнюю страницу Maxio Найти все сообщения от Maxio
  № 10  
Ответить с цитированием
Maxio

Регистрация: Mar 2004
Адрес: Dnepr, Ukraine
Сообщений: 30
ну да, тут задача креативнее получается, разные варианты возможны.
rainbowrussia, я имел в виду не двигать мышкой, ну хотя даже если двигать - вот, допустим, есть у нас
Код:
startX = startY = 0;
finX = finY = 100;
controlX = 100;
controlY = 0;
//кривая такого плана, например:
moveTo(startX, startY);
curveTo(controlX, controlY, finX, finY);
и вот теперь мувик, стоящий изначально в 0, 0, надо передвинуть по X, например, на 30. Но приэтом он должен быть отрисован на соответствующем Y, чтобы остаться НА нарисованной кривой.

Добавлено через 1 минуту
сейчас вот почитал про формулы этих кривых, всё сводится к параболам, я так понимаю. Но чтобы узнать параметры конкретно этой параболы... Эх, надо шевелить опять математику

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

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

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


 


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


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