![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Цитата:
Что-б вычислить скорость в секунду нужно записать его положение в начале секунды и в конце секунды, а потом определить расстояние между этими положениями... Вот я и хочу узнать как сохранить положение в начале секунды, а потом вычесть из него положение вконце секунды и так делать каждую секунду. Это и будет пиксели в секунду Последний раз редактировалось Sintesis; 12.01.2011 в 17:36. |
|
|||||
|
сделайте вашему объекту свойство моментальной скорости, в момент применения приращения координат вычисляйте скорость (т.е. данные начальной скорости из предыдущего значения свойства у вас есть) и меняйте свойство. а вообще есть всякие формулы расчета скорости при движении с ускорением.
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
var _oldTime:uint=0; var _offset:Number; //на сколько смещаеться объект function offsetObject(e:TimerEvent):void{ /* Тут помещаем код который смещает объект. */ var currentTime:uint=getTimer(); var timeOffset:Number=_oldTime - currentTime; var speed:Number=(_offset / timeOffset * 1000) _oldTime=currentTime; trace("the speed is " + speed + "px/s"); }
__________________
ranga |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Да, то, что нужно, но var _offset:Number; эта переменная так-же не известна, её то-же нужно вычислить записав положение объекта при _oldTime и при currentTime а потом вычесть
Добавлено через 15 часов 42 минуты Цитата:
s = DeltaM / DeltaT здесь дэльта T это пройденное время, а дэльта М это пройденное расстояние за это время. В уме то я понимаю как это делается, а вот в actionscript 3 нет((. incvizitor написал как получить дэльту T в коде, осталось найти по ней дельту M нужно от положения объекта в старом времени отнять положение объекта в новом времени. Как это в коде записать? Надо было назвать тему: как засечь скорость, а не как узнать скорость. incvizitor, и почему в твоём коде px/s? Где видно, что интервал между _oldTime и currentTime составляет секунду? И можно-ли этим интервалом манипулировать, увеличивать или уменьшать - что-б засечь скорость не за секунду а за другое время? Последний раз редактировалось Sintesis; 13.01.2011 в 15:25. |
|
|||||
|
Секунда так как getTimer возвращает милисекунды, а в коде я умножаю скорость на 1000, получаеться - скорость в секунду. если надо в милисекунду, то умножать на 1000 не надо.
М расщитываеться так: var sP:Point = new Point(_sp.x,_sp.y); var fP:Point = _destinationPoint; var offset = Math.sqrt((sP.x * sP.x) + (sP.y * sP.y)); _destinationPoint - кординаты в которые его сейчас переместим.
__________________
ranga |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
А, возвращает милисекунды, ясненько.
Вот тут: переменная fP нигде не участвует, зачем она? |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
_destinationPoint - кординаты в которые его сейчас переместим.
Такой координаты нет в условии, мы не перемещаем предмет - он сам перемещается, из-за своей массы скатывается с горы, отскакивает от стен и т.д. Но всё равно большое спасибо incvizitor, во многом помог. И так последний код не правильный. Ещё раз повторю как получить дэльту М: вот код: var _myObject:Sprite = new Sprite(); var _oldTime:uint=0; function offsetObject(e:TimerEvent):void{ var currentTime:uint=getTimer(); var timeOffset:Number=_oldTime - currentTime; var dm:Number = ????????? var speed:Number = (dm / timeOffset * 1000); _oldTime=currentTime; } так кажется дошло, как это сделать, сейчас проверю. Всё - получилось. Добавлено через 20 часов 33 минуты Капец, торможение. Так как интервал таймера - одна милесекунда, то засечь скорость в милесекунду можно было вот так: Последний раз редактировалось Sintesis; 15.01.2011 в 03:50. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|