我想在手机上使用加速计移动一个非常基本的椭圆或图像
下面我已经设置了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.X
、Acceleration.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);
}