![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Есть координаты точек А, Б, подопытный - красный шарик и его скорость=5. На основе координат и скорости шарика, нужно как-то высчитывать смещение по x и y, но я не знаю как.
![]()
__________________
Дети не должны знать о своих родителях |
|
|||||
|
А что такое точки А и Б, начало и конец пути? Тогда зачем скорость? Просто вычтите соответствующие координаты и возьмите модуль.
Хотя это наверно слишком просто, вы что то другое имели в виду?
__________________
Я не злопамятный, я запишу |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
треугольник, sin, cos ?
не очень ясна задача
__________________
low + |
|
|||||
|
samana
Да да да. Извините что неясно выразился, Точка Б это - конец пути, а А - координаты самого шарика. Добавлено через 7 минут Нужно двигать к Б, со скоростью 5
__________________
Дети не должны знать о своих родителях |
|
|||||
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); } } } } |
|
|||||
|
Вроде так.
__________________
Книги и желание лучшие учителя. Последний раз редактировалось Vektor; 14.01.2012 в 16:19. |
|
|||||
|
Цитата:
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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|