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

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

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

Регистрация: Aug 2005
Сообщений: 19
По умолчанию плавное перемещение в точку клика мышкой

новая трабла ... есть картинка, подшружается мувик, по щелчку в люб области мувик туда перемещается (эт делает след. код). а нада чтобы он ПЛАВНО туда перемещался...

_m = _root.createEmptyMovieClip("pnt",2);
_m._x=200; _m._y=200;
_m.attachMovie("pnt","pnt",200);
someListener = new Object();
someListener.onMouseDown = function ()
{
_m._x=_xmouse;
_m._y=_ymouse;
};
Mouse.addListener(someListener);

Старый 11.08.2005, 14:00
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
speed = 10;
_m = _root.createEmptyMovieClip ("pnt", 2);
_m._x = 200;
_m._y = 200;
_m.attachMovie ("pnt", "pnt", 200);
someListener = new Object ();
someListener.onMouseDown = function () {
	_m.dx = (_xmouse - _m._x) / speed;
	_m.dy = (_ymouse - _m._y) / speed;
	_m.cx = 0;
	_m.onEnterFrame = _m.enterFrame;
};
Mouse.addListener (someListener);
_m.enterFrame = function () {
	this.cx++;
	if (this.cx == speed) {
		delete this.onEnterFrame;
	}
	this._x += this.dx;
	this._y += this.dy;
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Aug 2005
Сообщений: 19
я сразу заметил, но все думал как исправить ошибку. не вышло.
дело в то что идет зависимость шага по перемещению объекта от конечного рассояния. т.е. чем дальше точка клика тем быстрее, чем ближе - не дождешься пока доедет. а while(this._x <= this._xmouse) {образно} не работает корректно. есть идеи?

Старый 12.08.2005, 16:24
pogga вне форума Посмотреть профиль Отправить личное сообщение для pogga Посетить домашнюю страницу pogga Найти все сообщения от pogga
  № 4  
Ответить с цитированием
pogga
"braze"
 
Аватар для pogga

Регистрация: May 2003
Адрес: Питер !
Сообщений: 1,316
Отправить сообщение для pogga с помощью ICQ
задай постоянную скорость - без приращения - будет всегда одинаково
или задай несколько случаев, чтоб скорость была больше/меньше в зависимости от чегототам
__________________
... хочешь сделать хорошо - сделай сам.

Старый 12.08.2005, 17:01
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от pogga
задай постоянную скорость - без приращения - будет всегда одинаково
или задай несколько случаев, чтоб скорость была больше/меньше в зависимости от чегототам
Не совсем. Если задать постоянную скорость, скажем 10, то движение строго по одной из осей так и останется, но вот диагонали скорость будет уже корень из 200. поэтому нужно использовать тригонометрию
вычислять с помощью atan угол движения и потом по косинусу угла *10 (для оси х) и синусу угла * 10 (для оси у) находить смещение.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 12.08.2005, 17:26
KidsKilla вне форума Посмотреть профиль Отправить личное сообщение для KidsKilla Посетить домашнюю страницу KidsKilla Найти все сообщения от KidsKilla
  № 6  
Ответить с цитированием
KidsKilla
.grin! wuz here
 
Аватар для KidsKilla

Регистрация: Aug 2004
Адрес: paradise city
Сообщений: 3,981
Отправить сообщение для KidsKilla с помощью ICQ
Код:
speed = 3;
_m = _root.createEmptyMovieClip ("pnt", 2);
_m._x = 200;
_m._y = 200;
_m.attachMovie ("pnt", "pnt", 200);
someListener = new Object ();
someListener.onMouseDown = function () {
	_m.endx = _xmouse;
	_m.endy = _ymouse;
	_m.onEnterFrame = _m.enterFrame;
};
Mouse.addListener (someListener);
_m.enterFrame = function () {
	this.cx++;
	if (Math.abs(this._x-this.endx)<1&&Math.abs(this._y-this.endy)<1) {
		this._x = this.endx;
		this._y = this.endy;
		delete this.onEnterFrame;
	}
	this._x += (this.endx-this._x)/speed;
	this._y += (this.endy-this._y)/speed;
};
оно?
__________________
Breakcore them all!

Старый 12.08.2005, 17:31
pogga вне форума Посмотреть профиль Отправить личное сообщение для pogga Посетить домашнюю страницу pogga Найти все сообщения от pogga
  № 7  
Ответить с цитированием
pogga
"braze"
 
Аватар для pogga

Регистрация: May 2003
Адрес: Питер !
Сообщений: 1,316
Отправить сообщение для pogga с помощью ICQ
угу, согласен 8) я как то не задумался об относительности понятия скорости в даноом случае ) - начал бы делать, тогда б сразу и вылезло ))
__________________
... хочешь сделать хорошо - сделай сам.

Старый 11.08.2005, 17:31
xapek вне форума Посмотреть профиль Отправить личное сообщение для xapek Найти все сообщения от xapek
  № 8  
Ответить с цитированием
xapek

Регистрация: Aug 2005
Сообщений: 19
все атлично. спасиба

Старый 12.08.2005, 18:41
xapek вне форума Посмотреть профиль Отправить личное сообщение для xapek Найти все сообщения от xapek
  № 9  
Ответить с цитированием
xapek

Регистрация: Aug 2005
Сообщений: 19
2KidsKilla: тоже самое, только в профиль. теперь по мере приблежения тормозит...
мой вариант по наводке iNils:

Код:
speed=10;
_m = _root.createEmptyMovieClip ("pnt", 2);
_m._x = 10; _m._y = 10;
_m.attachMovie ("pnt", "pnt", 200);
someListener = new Object ();
someListener.onMouseDown = function () {
	if(_xmouse<_m._x && _ymouse<_m._y)	{
		alfa=Math.atan((_m._y-_ymouse)/(_m._x-_xmouse));
		tmpx=-1; tmpy=-1;}
	else if(_xmouse>_m._x && _ymouse<_m._y)	{
		alfa=Math.atan((_m._y-_ymouse)/(_xmouse - _m._x));
		tmpx=1; tmpy=-1;}
	else if(_xmouse<_m._x && _ymouse>_m._y)	{
		alfa=Math.atan((_ymouse - _m._y)/(_m._x-_xmouse));
		tmpx=-1; tmpy=1;}
	else if(_xmouse>_m._x && _ymouse>_m._y)	{
		alfa=Math.atan((_ymouse - _m._y)/(_xmouse-_m._x));
		tmpx=1; tmpy=1;	}
};
Mouse.addListener (someListener);
_m.onEnterFrame = function () {
	this._x += speed*Math.cos(alfa)*tmpx;
	this._y += speed*Math.sin(alfa)*tmpy;
};
только теперь остановить не знаю как

Старый 12.08.2005, 18:48
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
а зачем столько подсчетов?

зная растояние до цели и скорость объекта, можно расчитать количество шагов нужных до достижения цели.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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