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

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

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

Регистрация: Aug 2004
Сообщений: 5
По умолчанию Движение за мышкой?

Нам нужно устроить движение мувика за мышкой, по принципу Диабло( вообщем как в рпг)...Т.е. кликнул по экрану, а мувик плавно побежал в точку клика + нужна возможность движения, когда кнопка мыши не отпущена....

Старый 07.08.2004, 20:08
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 2  
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Навскидку придумался такой алгоритм:
1)По теореме Пифагора вычисляем расстояние от того, что нам надо двигать, до точки клика, записываем все это дело в переменную distance.

2)Определеяем, сколько кадров будет двигаться наш мувик, если у нас скорость движения в пикселах\сек = speed, а фреймрейт = framerate:

framesNum = framerate*(distance/speed);

3)Теперь каждый кадр смещаем мувик по оси Х и по оси У, но сначала надо найти по какой на сколько.

Для Х: dx = (Х Мышки - Х Мувика)/framesNum;

Для Х: dy = (Y Мышки - Y Мувика)/framesNum;



В общих чертах, надеюсь, нигде не ошибся... Если что-то еще неясно -- телеграфируй.

Старый 08.08.2004, 00:26
artfla$her вне форума Посмотреть профиль Отправить личное сообщение для artfla$her Найти все сообщения от artfla$her
  № 3  
artfla$her
 
Аватар для artfla$her

Регистрация: Apr 2004
Адрес: Петербург
Сообщений: 549
Отправить сообщение для artfla$her с помощью ICQ
Вот какие методы я однажды написал (под общий случай), чтобы управлять мувиками.

MovieClip.prototype.setDefault = function() {
this.doneMove = 1;
this.spdPercent = 0.1;
};


MovieClip.prototype.moveIn = function(x:Number, y:Number) {
var x, y;
this.doneMove = 0;
this.onEnterFrame = function() {
if (this._x<>x) {
this._x -= (this._x-x)*this.spdPercent;
}
if (this._y<>y) {
this._y -= (this._y-y)*this.spdPercent;
}
if (Math.round(this._x-x) == 0 && Math.round(this._y-y) == 0) {
_global.Completers.push(this._name); //добавление в массив объектов, которые что-то завершили
this.doneMove = 1;
delete this.onEnterFrame;
}
};
};

Методов было много, потому я сделал и setDefault(). Но для данного примера метод пришлось жестко урезать до двух необходимых строк. Собственно, теперь он стал бесполезен... Можно и не использовать, заменив просто двумя строчками кода.

mc.setDefault();
_root.onMouseDown = function(){
mc.moveIn(_xmouse, _ymouse);
}
__________________
За двумя зайцами погонишься - от егеря по морде получишь

Старый 10.08.2004, 12:33
SPLINE1 вне форума Посмотреть профиль Отправить личное сообщение для SPLINE1 Найти все сообщения от SPLINE1
  № 4  
SPLINE1

Регистрация: Aug 2004
Сообщений: 5
mc.onMouseDown = function() {
//Определяем расстояние до клика;
dx = _xmouse - mc._x;
dy = _ymouse - mc._y;
// Рассчитываем дистанцию;
distance = Math.sqrt(dx*dx + dy*dy);
trace(distance);
}

А дальше чего делать? Я просто не вьехал как сюды привязать фреймрейт, фреймснум....

Насчет
mc.setDefault();
_root.onMouseDown = function(){
mc.moveIn(_xmouse, _ymouse);
}

moveIn не определяется как оператор, отсюда 0 действий....

Старый 10.08.2004, 12:51
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код:
MovieClip.prototype.asRPG=function(){
	this.onMouseDown=function(){
		var x=_xmouse,y=_ymouse;
		this.p=1;
		this.onEnterFrame=function(){
			with(this){
				_x=(_x+x)/2;_y=(_y+y)/2;
				if(p){
					x=_parent._xmouse;y=_parent._ymouse;
				}
			}
		}
	}
	this.onMouseUp=function(){this.p=0}
}
mc.asRPG();
Вложения
Тип файла: zip untitled-1.zip (3.8 Кб, 180 просмотров)

Старый 10.08.2004, 13:21
artfla$her вне форума Посмотреть профиль Отправить личное сообщение для artfla$her Найти все сообщения от artfla$her
  № 6  
artfla$her
 
Аватар для artfla$her

Регистрация: Apr 2004
Адрес: Петербург
Сообщений: 549
Отправить сообщение для artfla$her с помощью ICQ
Цитата:
moveIn не определяется как оператор, отсюда 0 действий....
??? moveIn - метод MovieClip. mc - собственно мувик. Любой. Если ты все сделал правильно, объект БУДЕТ и должен двигаться. Тестировалось неоднократно. И я не понял, что ты имеешь ввиду - "не определяется как оператор" ?
__________________
За двумя зайцами погонишься - от егеря по морде получишь

Старый 10.08.2004, 14:08
SPLINE1 вне форума Посмотреть профиль Отправить личное сообщение для SPLINE1 Найти все сообщения от SPLINE1
  № 7  
SPLINE1

Регистрация: Aug 2004
Сообщений: 5
silin огромное спасибо

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

Регистрация: Jul 2004
Сообщений: 12
2 Bad Habit

а можно пример?
__________________
Мир, любовь, состродание.

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

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

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


 


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


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