![]() |
|
||||||||||
|
|||||||
| Результаты опроса: Обязательно нужна тригонометрия для решения этой проблемы? | |||
| Да |
|
4 | 66.67% |
| Нет |
|
2 | 33.33% |
| Голосовавшие: 6. Вы ещё не голосовали в этом опросе | |||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+4 10.07.10]
[+1.4 10.08.10] [+1 20.08.10] |
Здравствуйте, столкнулся с небольшой проблемой, которую впервые не смог решить сам...
Дело в том что мне надо переместить объект до определенной точки) но проблема в том что он перемещается по координатам (x y) а не по прямой линии (вектору). Пожалуйста помогите! Напишите программу с помощью которой любой объект будет перемещаться из одной точки в любую другую по прямой линии (вектору) Последний раз редактировалось KirAmp; 06.02.2010 в 16:20. |
|
|||||
|
Почему бы тебе не попробовать Tween классы?
Но можно и так: функия go принимает параметры 1)какой клип перемещать 2)скорость передвижения 3)куда по X 4)куда по Y ------------------------- Например в следующем коде клип с именем clip будет двигаться к мышке в одинаковой скоростью. _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; } } |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Смысл устраивать голосование по вопросу на который дается однозначный ответ?
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; } |
|
|||||
|
Banned
[+4 10.07.10]
[+1.4 10.08.10] [+1 20.08.10] |
Спасибо огромное! С детства не дружу с тригонометрией
|
|
|||||
|
Регистрация: Jun 2010
Сообщений: 2
|
Каким образом возможно реализовать привязку таскаемого объекта к линии. То есть нечто что можно потаскать мышкой(скроллер) и оно должно перемещаться по прямой но не вертикальной или горизонтальной, а диагональной.
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Как вариант - разместить прозрачный мувик под/над нужным, повесить onPress, onRelease, onReleaseOutside на него, на событии onMouseMove отрисовывать нужный мувик в расчетной позиции, относительно положения прозрачного мувика. Можно прозрачному мувику задать границы перемещения (прямоугольник). В событиях onRelease, onReleaseOutside позиционировать прозрачный мувик на место нашего.
|
|
|||||
|
Регистрация: Mar 2004
Адрес: Dnepr, Ukraine
Сообщений: 30
|
а как бы кто сделал, если бы надо было сделать движение непрямолинейное?
например, по траектории кривой (по-моему, 2го порядка, не помню), которые позволяет рисовать as2 метод - curveTo. Есть клип, начальная точка, конечная, траектория между ними описывается кривой, параметры которой вы знаете (анкор известен) - кто бы к какой идее обратился? |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 560
|
Я бы сделал так как написал выше, если формула кривой известна.
|
|
|||||
|
Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
|
А если кривую разбить на пикселы, внести их в массив и уже по массиву двигаться?
|
|
|||||
|
Регистрация: Mar 2004
Адрес: Dnepr, Ukraine
Сообщений: 30
|
ну да, тут задача креативнее получается, разные варианты возможны.
rainbowrussia, я имел в виду не двигать мышкой, ну хотя даже если двигать - вот, допустим, есть у нас startX = startY = 0; finX = finY = 100; controlX = 100; controlY = 0; //кривая такого плана, например: moveTo(startX, startY); curveTo(controlX, controlY, finX, finY); Добавлено через 1 минуту сейчас вот почитал про формулы этих кривых, всё сводится к параболам, я так понимаю. Но чтобы узнать параметры конкретно этой параболы... Эх, надо шевелить опять математику ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|