Показать сообщение отдельно
Старый 28.04.2011, 13:53
Gonsalez вне форума Посмотреть профиль Отправить личное сообщение для Gonsalez Найти все сообщения от Gonsalez
  № 1  
Ответить с цитированием
Gonsalez
 
Аватар для Gonsalez

Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
Question остановка объекта в точке курсора

есть шарик с instance name - mc
при клике мышки он летит в сторону курсора и должен остановиться в точке, где был произведен клик.. при клике он летит и постепенно останавливается, но останавливается не совсем в нужной точке, а пролетает немного дальше или не долетает..
Код AS3:
var X:Number = mouseX;
var Y:Number = mouseY;
 
//Скорость шарика
var mc_speedXTO:Number;
var mc_speedYTO:Number;
 
//Скорость движения шара
var speed:Number = 10;
 
//Добавляем ENTER_FRAME , что анимирует движение шара
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse);
stage.addEventListener(Event.ENTER_FRAME, moveBall);
 
function mouse(e:Event):void
{
	//Вычисляем расстояния по x и y от шара до точки
	var distance_posX:Number = mouseX - mc.x;
	var distance_posY:Number = mouseY - mc.y;
	//Вычисляем расстояние от точки до шара
	var dist_pos = Math.sqrt(distance_posX * distance_posX + distance_posY * distance_posY);
	//Вычисляем угол между шаром и мышью
	var angle:Number = Math.atan2(distance_posY,distance_posX);
 
	var distance_mouseX:Number = mouseX - mc.x;
	var distance_mouseY:Number = mouseY - mc.y;
	//Вычисляем расстояние от шара до мышки
	var dist_mouse = Math.sqrt(distance_mouseX * distance_mouseX + distance_mouseY * distance_mouseY);
 
 
	mc_speedXTO = Math.cos(angle) * speed * 4;
	mc_speedYTO = Math.sin(angle) * speed * 4;
	mc.x +=  mc_speedXTO;
	mc.y +=  mc_speedYTO;
 
 
	if (dist_mouse > 0)
	{
		var mc_angle = Math.atan2(distance_mouseY,distance_mouseX);
 
		mc_speedXTO = Math.cos(mc_angle) * speed * 4;
		mc_speedYTO = Math.sin(mc_angle) * speed * 4;
 
 
	}
 
 
}
 
function moveBall(e:Event):void
{
	mc.x +=  mc_speedXTO;
	mc.y +=  mc_speedYTO;
	//Уменьшаем скорость
	mc_speedXTO *=  0.9;
	mc_speedYTO *=  0.9;
 
}
помогите разобраться в чем ошибка


Последний раз редактировалось Gonsalez; 28.04.2011 в 13:56.