如何使用xamarin中的加速度计移动椭圆



我想在手机上使用加速计移动一个非常基本的椭圆或图像

下面我已经设置了xamarin Essentials加速器,但椭圆没有移动,Z坐标也不见了。有人知道我做错了什么吗?

查看

<StackLayout VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand">
<Ellipse x:Name="ballEllipse" Fill="Green" WidthRequest="50" HeightRequest="50"/>
</StackLayout>

查看后端

public partial class AccelerometerPage2 : ContentPage
{
public AccelerometerPage2()
{
InitializeComponent();
if (Accelerometer.IsMonitoring)
return;
// Register and Staart Accelermeter
Accelerometer.ReadingChanged += Accelerometer_ReadingChanged;
Accelerometer.Start(SensorSpeed.UI);
}
void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
await ballEllipse.TranslateTo(e.Reading.Acceleration.X, 
e.Reading.Acceleration.Y, 1000);
}
}

事实上,它应该起作用,因为Acceleration.XAcceleration.Y的值太小,Ellipse看起来不像在移动,你可以尝试扩展该值以查看它在移动。此外,您没有在此处捕获Z坐标,因此可以尝试打印其值。

async void Accelerometer_ReadingChanged(object sender, AccelerometerChangedEventArgs e)
{
var data = e.Reading;
Console.WriteLine($"Reading: X: {data.Acceleration.X}, Y: {data.Acceleration.Y}, Z: {data.Acceleration.Z}");
await ballEllipse.TranslateTo(e.Reading.Acceleration.X*100,
e.Reading.Acceleration.Y*100, 1000);
}

最新更新