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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.01.2011, 17:34
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 11  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от goodguy Посмотреть сообщение
Не совсем понятен вопрос.
Очевидно же, что к положению объекта добавляется некоторое количество пикселей. Это и есть скорость. В чем проблема то?
нет, не очевидно, если есть трения, сопротивления всякие, иногда ускорения. А если например скорости вообще в коде нет, то-есть есть сила которая толкнула объект, дальше он катится по инерции из-за своей массы, останавливается из-за трения.
Что-б вычислить скорость в секунду нужно записать его положение в начале секунды и в конце секунды, а потом определить расстояние между этими положениями...
Вот я и хочу узнать как сохранить положение в начале секунды, а потом вычесть из него положение вконце секунды и так делать каждую секунду. Это и будет пиксели в секунду


Последний раз редактировалось Sintesis; 12.01.2011 в 17:36.
Старый 12.01.2011, 20:41
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 12  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
сделайте вашему объекту свойство моментальной скорости, в момент применения приращения координат вычисляйте скорость (т.е. данные начальной скорости из предыдущего значения свойства у вас есть) и меняйте свойство. а вообще есть всякие формулы расчета скорости при движении с ускорением.
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Код AS3:
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

Старый 12.01.2011, 23:30
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 14  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Да, то, что нужно, но var _offset:Number; эта переменная так-же не известна, её то-же нужно вычислить записав положение объекта при _oldTime и при currentTime а потом вычесть

Добавлено через 15 часов 42 минуты
Цитата:
Сообщение от cleptoman Посмотреть сообщение
а вообще есть всякие формулы расчета скорости при движении с ускорением.
Ну так вот эта формула:
s = DeltaM / DeltaT
здесь дэльта T это пройденное время, а дэльта М это пройденное расстояние за это время.
В уме то я понимаю как это делается, а вот в actionscript 3 нет((.
incvizitor написал как получить дэльту T в коде, осталось найти по ней дельту M
нужно от положения объекта в старом времени отнять положение объекта в новом времени.
Как это в коде записать?
Надо было назвать тему: как засечь скорость, а не как узнать скорость.
incvizitor, и почему в твоём коде px/s? Где видно, что интервал между _oldTime и currentTime составляет секунду? И можно-ли этим интервалом манипулировать, увеличивать или уменьшать - что-б засечь скорость не за секунду а за другое время?


Последний раз редактировалось Sintesis; 13.01.2011 в 15:25.
Старый 14.01.2011, 17:16
incvizitor вне форума Посмотреть профиль Отправить личное сообщение для incvizitor Найти все сообщения от incvizitor
  № 15  
Ответить с цитированием
incvizitor
 
Аватар для incvizitor

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Секунда так как getTimer возвращает милисекунды, а в коде я умножаю скорость на 1000, получаеться - скорость в секунду. если надо в милисекунду, то умножать на 1000 не надо.
М расщитываеться так:
Код AS3:
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));
_sp - движимый объект
_destinationPoint - кординаты в которые его сейчас переместим.
__________________
ranga

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

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от incvizitor Посмотреть сообщение
Секунда так как getTimer возвращает милисекунды
А, возвращает милисекунды, ясненько.
Вот тут:
Код AS3:
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));
переменная fP нигде не участвует, зачем она?

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Какой ужас!
Извини, запарки на работе, немного голова крутиться

Код AS3:
var sP:Point = new Point(_sp.x,_sp.y);
var fP:Point = sP.subtract(_destinationPoint);
var offset:Number = Math.sqrt((fP.x * fP.x) + (fP.y * fP.y));
__________________
ranga

Старый 14.01.2011, 20:37
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 18  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
_destinationPoint - кординаты в которые его сейчас переместим.
Такой координаты нет в условии, мы не перемещаем предмет - он сам перемещается, из-за своей массы скатывается с горы, отскакивает от стен и т.д.
Но всё равно большое спасибо incvizitor, во многом помог.
И так последний код не правильный.
Ещё раз повторю как получить дэльту М:
вот код:
Код AS3:
      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;
}
нужно сохранить где-то положение объекта(myObject.x) во время _oldTime в какую-то переменную например oldM:number, дальше сохранить myObject.x во время currentTime в переменную currentM:Number. Дальше dm = currentM - oldM;
так кажется дошло, как это сделать, сейчас проверю.
Всё - получилось.

Добавлено через 20 часов 33 минуты
Капец, торможение. Так как интервал таймера - одна милесекунда, то засечь скорость в милесекунду можно было вот так:
Код AS3:
var oldM:number = 0;
function offsetObject(e:TimerEvent):void{
            var currentM:Number = myObject.x;
            var speed:Number = currentM - oldM;
	oldM = currentM;
}


Последний раз редактировалось Sintesis; 15.01.2011 в 03:50.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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