首先,让我解释一下我的目标。我试图制作一个动画,改变一个ArcShape的属性。ArcShape的构造函数需要两个字段:startAngle和sweepAngle。我想要动画sweepAngle,使其在屏幕上呈现为不断缩小的圆形。
你可以通过想象PacMan来想象这个动画。想象他的嘴是闭着的。这个动画就像是他越来越张开上颚,直到没有PacMan了。
现在...我有几个问题要实现这个。首先,一旦创建了一个ArcShape,就没有内置的方法可以更改它的sweepAngle。这带来了我的第一个问题:有没有办法覆盖ArcShape并实现一些setSweepAngle方法?还是我必须为每个我想显示的sweepAngle创建一个新的ArcShape?
现在到第二个问题...假设我找到了第一个问题的解决方案,我怎么能创建这个Animation呢?这是我现在的要点:
你可以通过想象PacMan来想象这个动画。想象他的嘴是闭着的。这个动画就像是他越来越张开上颚,直到没有PacMan了。
现在...我有几个问题要实现这个。首先,一旦创建了一个ArcShape,就没有内置的方法可以更改它的sweepAngle。这带来了我的第一个问题:有没有办法覆盖ArcShape并实现一些setSweepAngle方法?还是我必须为每个我想显示的sweepAngle创建一个新的ArcShape?
现在到第二个问题...假设我找到了第一个问题的解决方案,我怎么能创建这个Animation呢?这是我现在的要点:
public class OpenPacman extends Animation {
public OpenPacman(float startAngle, float sweepAngle) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
/* This represents the current sweepAngle */
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
//Now I need to update the ArcShape's sweepAngle to currAngle. But HOW?
}
}