我尝试使用Xamarin.Android中的Value Animator通过增加对象的X和Y坐标来移动对象。我将自己定位于Java的Android文档。
using Android.Support.V4.View;
using Android.Animation;
namespace PaintApp
{
class PaintView : View
{
private Pair ofsetXY = new Pair(0, 0);
private ValueAnimator animator = new ValueAnimator();
PropertyValuesHolder propertyX = PropertyValuesHolder.OfInt("PROPERTY_X", 0, 1000);
PropertyValuesHolder propertyY = PropertyValuesHolder.OfInt("PROPERTY_Y", 0, 1000);
public void Kick(float dx, float dy, float vx, float vy)
{
animator.SetValues(propertyX, propertyY);
animator.SetDuration(2000);
animator.AddUpdateListener(new ValueAnimator.IAnimatorUpdateListener()
{
public override void OnAnimationUpdate(ValueAnimator animation)
{
ofsetXY.First = (int)animation.GetAnimatedValue("PROPERTY_X");
ofsetXY.Second = (int)animation.GetAnimatedValue("PROPERTY_Y");
Invalidate();
}
});
animator.start();
}
}但是我得到了一个错误: Error CS0144无法创建抽象类或接口'"ValueAnimator.IAnimatorUpdateListener"‘的实例,并且OnAnimationUpdate不是PaintView的成员。
这个错误对我来说是有道理的,但是什么才是正确的方法呢?
发布于 2020-10-13 18:40:39
.In在你的情况下,你可以像下面这样修改代码
class PaintView : Android.Views.View, IAnimatorUpdateListener
{
private Pair ofsetXY = new Pair(0, 0);
private ValueAnimator animator = new ValueAnimator();
PropertyValuesHolder propertyX = PropertyValuesHolder.OfInt("PROPERTY_X", 0, 1000);
PropertyValuesHolder propertyY = PropertyValuesHolder.OfInt("PROPERTY_Y", 0, 1000);
public void Kick(float dx, float dy, float vx, float vy)
{
animator.SetValues(propertyX, propertyY);
animator.SetDuration(2000);
animator.AddUpdateListener(this);
animator.start();
}
public void OnAnimationUpdate(ValueAnimator animation)
{
ofsetXY.First = (int)animation.GetAnimatedValue("PROPERTY_X");
ofsetXY.Second = (int)animation.GetAnimatedValue("PROPERTY_Y");
Invalidate();
}
}https://stackoverflow.com/questions/64332659
复制相似问题