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

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

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
По умолчанию Движение, на основе координат точек и скорости

Есть координаты точек А, Б, подопытный - красный шарик и его скорость=5. На основе координат и скорости шарика, нужно как-то высчитывать смещение по x и y, но я не знаю как.

Код:
              A x,y
             /
           /
         /
  x,y  B
__________________
Дети не должны знать о своих родителях

Старый 14.01.2012, 15:51
StasMIX вне форума Посмотреть профиль Отправить личное сообщение для StasMIX Найти все сообщения от StasMIX
  № 2  
Ответить с цитированием
StasMIX
 
Аватар для StasMIX

Регистрация: Aug 2008
Адрес: Украина, город Херсон
Сообщений: 50
Отправить сообщение для StasMIX с помощью ICQ
А что такое точки А и Б, начало и конец пути? Тогда зачем скорость? Просто вычтите соответствующие координаты и возьмите модуль.
Код AS3:
shiftX=Math.abs(x1-x2);
shiftY=Math.abs(y1-y2);
Хотя это наверно слишком просто, вы что то другое имели в виду?
__________________
Я не злопамятный, я запишу

Старый 14.01.2012, 15:52
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 3  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
треугольник, sin, cos ?
не очень ясна задача
__________________
low +

Старый 14.01.2012, 15:53
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Или вы хотите запустить красный шарик из точки А в точку Б, со скоростью 5?

Старый 14.01.2012, 15:57
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 5  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
samana
Да да да.
Извините что неясно выразился, Точка Б это - конец пути, а А - координаты самого шарика.

Добавлено через 7 минут
Нужно двигать к Б, со скоростью 5
__________________
Дети не должны знать о своих родителях

Старый 14.01.2012, 16:09
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
 
	/**
	 * ...
	 * @author Samana
	 */
	public class Main extends Sprite 
	{
		private var redBall:Sprite;
		private var pointB:Point;
		private var speed:Number = 5;
 
		public function Main():void 
		{
			pointB = new Point(400, 500);
 
 
			redBall = new Sprite();
			redBall.graphics.beginFill(0xFF0000);
			redBall.graphics.drawCircle(0, 0, 30);
			redBall.graphics.endFill();
			redBall.x = 150;
			redBall.y = 150;
			addChild(redBall);
 
			addEventListener(Event.ENTER_FRAME, enterFrame);
 
		}
 
		private function enterFrame(e:Event):void 
		{
 
			var dx:Number = pointB.x - redBall.x;
			var dy:Number = pointB.y - redBall.y;
			var dist:Number = Math.sqrt(dx * dx + dy * dy);
 
			if (dist > speed)
			{
				redBall.x += (dx / dist) * speed;
				redBall.y += (dy / dist) * speed;
			}
			else
			{
				redBall.x = pointB.x;
				redBall.y = pointB.y;
				removeEventListener(Event.ENTER_FRAME, enterFrame);
			}
		}
 
	}
 
}
Но удобнее наверно будет использовать TweenMax.

Старый 14.01.2012, 16:11
Vektor вне форума Посмотреть профиль Отправить личное сообщение для Vektor Найти все сообщения от Vektor
  № 7  
Ответить с цитированием
Vektor
 
Аватар для Vektor

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
Вроде так.
Код AS3:
var distX=A.x-B.x;
var distY=A.y-B.y;
var dist = Math.sqrt(distX*distX+distY*distY);
var time = dist/speed;
//Получаем скорость по Х и Y.
var mcSpeedX= distX/time;
var mcSpeedY= distY/time;
__________________
Книги и желание лучшие учителя.


Последний раз редактировалось Vektor; 14.01.2012 в 16:19.
Старый 14.01.2012, 16:22
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 8  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
samana
Vektor

Спасибо, то что нужно.

samana
У тебя даже с демонстрацией
__________________
Дети не должны знать о своих родителях

Старый 16.01.2012, 22:08
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 9  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
Цитата:
Сообщение от Vektor Посмотреть сообщение
Вроде так.
Код AS3:
var distX=A.x-B.x;
var distY=A.y-B.y;
var dist = Math.sqrt(distX*distX+distY*distY);
var time = dist/speed;
//Получаем скорость по Х и Y.
var mcSpeedX= distX/time;
var mcSpeedY= distY/time;
Хотя задача и решена, но всё же не лучше ли использовать фичи .geom.Point -a?
Код AS3:
 
import flash.geom.Point;
 
var speed:int = 5
var sp:Point =  new Point(B.x - A.x, B.y - A.y)
sp.normalize(speed)
trace(sp.x*sp.x+sp.y*sp.y) // speed^2 = 25
mcSpeedX = sp.x
mcSpeedY = sp.y
И вообще - использовать два намбера для хранения скорости вместо класса вектора(геометрического, ясное дело) - фи-фи-фи, как некрасиво

//случайно пропустил ответ samana, но здесь я делал упор именно на Point.normalize()
__________________
cats are supreme beings


Последний раз редактировалось am_devcorp; 16.01.2012 в 22:13.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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