Xaml 弹跳式加速度计
我的Windows Phone页面上有一个矩形。当用户倾斜手机时,矩形的位置会根据倾斜角度发生变化(我使用TranslateTransform)。它很好用 像这样:Xaml 弹跳式加速度计,xaml,animation,accelerometer,windows-phone,Xaml,Animation,Accelerometer,Windows Phone,我的Windows Phone页面上有一个矩形。当用户倾斜手机时,矩形的位置会根据倾斜角度发生变化(我使用TranslateTransform)。它很好用 像这样: void CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e) { // respond to the accelerometer on the UI thread Dispatcher
void CurrentValueChanged(object sender,
SensorReadingEventArgs<AccelerometerReading> e)
{
// respond to the accelerometer on the UI thread
Dispatcher.BeginInvoke(new Action(() =>
{
// left, right
var _LeftDelta = e.SensorReading.Acceleration.X * 5d;
var _NewLeft = m_Transform.X + _LeftDelta;
var _PanelWidth = ContentPanel.RenderSize.Width;
var _RectangleWidth = m_Rectangle.RenderSize.Width;
if (_NewLeft > 0 && _NewLeft < _PanelWidth - _RectangleWidth)
m_Transform.X = _NewLeft;
// up, down
var _RightDelta = e.SensorReading.Acceleration.Y * -5d;
var _NewTop = m_Transform.Y + _RightDelta;
var _PanelHeight = ContentPanel.RenderSize.Height;
var _RectangleHeight = m_Rectangle.RenderSize.Height;
if (_NewTop > 0 && _NewTop < _PanelHeight - _RectangleHeight)
m_Transform.Y = _NewTop;
}));
}
void CurrentValueChanged(对象发送方,
传感器读取事件参数(e)
{
//响应UI线程上的加速计
Dispatcher.BeginInvoke(新操作(()=>
{
//左,右
var _LeftDelta=e.传感器读数.加速度.X*5d;
var _NewLeft=m_Transform.X+_LeftDelta;
var _PanelWidth=ContentPanel.renderize.Width;
var _RectangleWidth=m_Rectangle.RenderSize.Width;
如果(_NewLeft>0&&u NewLeft<_PanelWidth-_RectangleWidth)
m_Transform.X=_NewLeft;
//上下
var _RightDelta=e.传感器读数.加速度.Y*-5d;
var _NewTop=m_Transform.Y+_rightdalta;
var _PanelHeight=ContentPanel.renderize.Height;
var _RectangleHeight=m_Rectangle.RenderSize.Height;
如果(_NewTop>0&&u NewTop<_PanelHeight-_RectangleHeight)
m_Transform.Y=_NewTop;
}));
}
不过,我想做的是在用户点击页面侧面时添加一个反弹
有人知道怎么做吗?您当前的代码没有加速度和速度分开 应根据加速度更新速度,而不是根据加速度更新位置。 你的值5d代替了质量。它告诉你一个给定的力发生了多少变化 您需要为位置保留变量 x、 y 和速度 v_x,v_y 然后用
x <- x+ v_x* step_size
y <- y+ v_y* step_size
x您设法找到了两个相似的问题并同时回答了它们。谢谢你的意见。然而,你的解决方案并不是我希望你去的地方。我在寻找如何动态地应用缓和功能。
v_x <- v_x + acceletation_x* 5d * step_size
v_y <- v_y + acceletation_y* 5d * step_size
v_x <- v_x * 0.95
v_y <- v_y * 0.95