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

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

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

Регистрация: May 2001
Сообщений: 36
По умолчанию Плавное перемещение объекта

Есть объект с координатами х=283 у=270. Надо его по нажатию кнопки плавно переместить в х=96 у=334
Как посредством actionscript это сотворить?
Книжку по флэшу отдала а мозгов видимо не хватает.
__________________
Всем спасибо.
С приветом,
Елена

Старый 14.06.2002, 16:32
greyshaman вне форума Посмотреть профиль Отправить личное сообщение для greyshaman Найти все сообщения от greyshaman
  № 2  
greyshaman

Регистрация: Aug 2001
Адрес: vg
Сообщений: 352
onClipEvent(load){
angle_rad=Math.atan2((y1-y2), (x1-x2));
dy=Math.sin(angle_rad);
dx=Math.cos(angle_rad);}
onClipEvent(enterFrame){
if(кнoпканажата){
if(_x<x1&&_y<y1){
_x+=dx;
_y+=dy;
}
}
}

Вот так приблизительно.

Старый 14.06.2002, 16:44
Mosquito вне форума Посмотреть профиль Отправить личное сообщение для Mosquito Найти все сообщения от Mosquito
  № 3  
Mosquito

Регистрация: May 2001
Сообщений: 36
огромное спасибо, но вот вопрос.
а "оно" его будет перемещать по прямой или по дуге?
мне надо по прямой...
__________________
Всем спасибо.
С приветом,
Елена

Старый 14.06.2002, 17:10
Crazy Blot вне форума Посмотреть профиль Отправить личное сообщение для Crazy Blot Найти все сообщения от Crazy Blot
  № 4  
Crazy Blot

Регистрация: Feb 2001
Сообщений: 26
Отправить сообщение для Crazy Blot с помощью ICQ
Question У меня похожий вопрос есть...

Мне нужно приблизительно тоже самое, но только чтобы оьект колебался возле нового центра.
Например вот такая задача.
Где то помещается клип. Для негно задется скорость, и координата назначения. Он к ней стремится и поколебавшись около нее останавливается.
Что-то не могу вспомнить как это посчиать. Давно школу закончил

Старый 14.06.2002, 17:30
greyshaman вне форума Посмотреть профиль Отправить личное сообщение для greyshaman Найти все сообщения от greyshaman
  № 5  
greyshaman

Регистрация: Aug 2001
Адрес: vg
Сообщений: 352
2 комарик а откуда там дуге взятся
2 bolt начальную

Старый 14.06.2002, 17:42
Crazy Blot вне форума Посмотреть профиль Отправить личное сообщение для Crazy Blot Найти все сообщения от Crazy Blot
  № 6  
Crazy Blot

Регистрация: Feb 2001
Сообщений: 26
Отправить сообщение для Crazy Blot с помощью ICQ
По умолчанию Именно начальную...

Я проработав 10 лет в области компьютерной графики и думать не мог, что когда-нибудь мне понадобиться вспоминать тригонометрию. Но вот погрузился во флеш и понял, что ошибался.
Чем огрызаться лучше бы помог. У меня справочников под рукой нету, а товарищи по работе все сплошные менеджеры да художники (как и я). Хоть одного бы программиста - они с математикой дружны, обычно.

Старый 14.06.2002, 23:49
lizergil вне форума Посмотреть профиль Отправить личное сообщение для lizergil Найти все сообщения от lizergil
  № 7  
lizergil
 
Аватар для lizergil

Регистрация: Jan 2002
Адрес: Королёв
Сообщений: 735
Отправить сообщение для lizergil с помощью ICQ Отправить сообщение для lizergil с помощью Yahoo
это не тригонометрия, а аналитическая геометрия на плоскости, или линейная алгебра
МГУЛ - ПМ - РУЛЕЗ!!!

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

Регистрация: Aug 2001
Сообщений: 4,121
2Carzy Blot
движение до заданной точки можно сделать как написал шаман:
считаем угол наклона траектории через арктангенс (отношение разностей соответствующих координат), и по найденному углу через синус и косинус вычисляем каждую следующую точку с заданным шагом.

теперь затухание. теория.
общая формула колебательного процесса (начальный сдвиг фазы выбросили):
x = centerpoint.x + A*cos(wt);
y = centerpoint.y + A*sin(wt);
...то есть 't' - параметр, постоянно растет, а 'w' - циклическая частота (количество периодов за единицу времени)

чтобы гармонические колебания затухали, нужно уменьшать амплитуду 'A'...
можно сделать экспоненциальное затухание
(вроде A = C*exp(-t/T); где t - это тот же параметр, C - начальное значение амплитуды, а 'T' - начальное значение параметра 't')
а можно и просто линейное.
можно, к примеру, сделать A *= 0.9; тогда каждое следующее значение амплитуды будет на одну десятую меньше предыдущего, что естесственно приведет к затуханию...

1:11 по мск времени примерчик делать влом
если нужно, то завтра... или может шаман или лизергиль разродится


Последний раз редактировалось Nox Noctis; 15.06.2002 в 02:14.
Старый 15.06.2002, 02:55
Al S'asha вне форума Посмотреть профиль Отправить личное сообщение для Al S'asha Найти все сообщения от Al S'asha
  № 9  
Al S'asha

Регистрация: Sep 2001
Адрес: временно New York
Сообщений: 136
По умолчанию Вот скрипт

/*Этот скрипт - к любому мувику.
Хрестоматийный пример
bounce .
Только ещё как Bonus - можно делать драг мышью*/
onClipEvent (mouseDown) {
// drag the object if the cursor is over it and mouse is clicked
if (hitTest(_root._xmouse, _root._ymouse, true)) {
startDrag ("");
set ("_parent.press" add this._name, true);
// get the location of this object when picked up
xLoc = this._x;
yLoc = this._y;
// get the time
timePressed = getTimer();
}
}
onClipEvent (mouseUp) {
stopDrag ();
set ("_parent.press" add this._name, false);
// checking the timer, we can find out:
// did the user throw the object, or just pick it up and carry it?
if (getTimer()<timePressed+300) {
// they definitely threw the object.
// what is the new location of this object?
xNewLoc = this._x;
yNewLoc = this._y;
// how hard did they throw it?
xTravel = xNewLoc-xLoc;
yTravel = yNewLoc-yLoc;
// setting the speed of the object depending on how far they travelled with it
xInc = xTravel/2;
yInc = yTravel/2;
timePressed = 0;
} else if (getTimer()>timePressed+300) {
// they did not throw the object, just carried it, so don't move it
xInc = 0;
yInc = 0;
}
}
onClipEvent (enterFrame) {
hit = false;
for (objects in _parent) {
// check out all of the other objects, are they touching this one?
if (hitTest(eval("_root." add objects add "._x"), eval("_root." add objects add "._y"), true) && objects != this._name) {
hit = true;
}
if (hit == true && objects != this._name) {
// an object is touching this one, but where is it?
if (eval("_root." add objects add "._y")<this._y) {
// if the colliding object is above this one,
// we have to allow it to bounce to the left or right if necessary
offset = (this._x-eval("_root." add objects add "._x"));
set ("_root." add objects add ".xInc", eval("_root." add objects add ".xInc")+offset);
xInc = xInc+offset;
}
// we find out how hard the other object hit this one
// the impact of that object affects the speed of this object
xIncHit = eval("_root." add objects add ".xInc");
yIncHit = eval("_root." add objects add ".yInc");
yInc = yInc+yIncHit;
xInc = xInc+xIncHit;
this._x = this._x+xIncHit;
this._y = this._y+yIncHit;
// when an object hits another, its speed is reversed. here, we just send the object
// in the other direction, at the same speed it was travelling when it hit this one
//
// we don't know which object hit us, so we just find out the name of the last thing
// that hit us, and set its movement values to the opposite of what it was before
set ("_root." add objects add ".xInc", eval("_root." add objects add ".xInc")*(-1));
set ("_root." add objects add ".yInc", eval("_root." add objects add ".yInc")*(-1));
hit = false;
}
}
// time to make the object move
if (eval("_parent.press" add this._name) != true) {
// the speed increment becomes 94% of itself in each iteration. this is our "friction".
// it may or may not be scientific, but it looks realistic
xInc = xInc*.94;
yInc = yInc*.94;
// ditto for gravity. we need something to make the object(s) drop towards the bottom
gravity = 3;
yInc = yInc+gravity;
// these next two lines are actually the core movement of this object
this._y = this._y+yInc;
this._x = this._x+xInc;
// set up the bounds for bouncing objects
leftBound = 0;
rightBound = 550;
topBound = 0;
bottomBound = 400;
// if the object goes off bounds, send it back and reverse its travel speed
if (this._x>rightBound) {
this._x = rightBound;
xInc = -xInc;
} else if (this._x<leftBound) {
this._x = leftBound;
xInc = -xInc;
} else if (this._y>bottomBound) {
this._y = bottomBound;
yInc = -yInc;
} else if (this._y<topBound) {
this._y = topBound;
yInc = -yInc;
}
}
}
__________________
Thinking ActionScript (c)
Dreaming Flash (c)

Старый 15.06.2002, 14:51
Crazy Blot вне форума Посмотреть профиль Отправить личное сообщение для Crazy Blot Найти все сообщения от Crazy Blot
  № 10  
Crazy Blot

Регистрация: Feb 2001
Сообщений: 26
Отправить сообщение для Crazy Blot с помощью ICQ
По умолчанию Спасибо буду разбираться...

Справочник нарыл заодно. Что-то начало смутно вспылвать из пучин забвения.

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

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

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


 


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


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