【发布时间】:2011-05-20 00:08:45
【问题描述】:
首先让我解释一下我的目标。我正在尝试制作一个 Animation 来更改 ArcShape 的属性。 ArcShape's 构造函数有两个字段:startAngle 和 sweepAngle。我想为sweepAngle 设置动画,使其在屏幕上显示为一个不断缩小的圆圈。
你可以通过想象吃豆人来想象这个动画。想象他的嘴是闭着的。这个动画类似于他越来越张开上颚,直到不再有吃豆人。
现在...我在实现这一点时遇到了一些问题。首先,一旦创建了ArcShape,就没有内置方法可以更改它的sweepAngle。这让我想到了我的第一个问题:有没有办法覆盖 ArcShape 并实现一些 setSweepAngle 方法?还是我必须为我希望显示的每个 sweepAngle 创建一个 new 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?
}
}
【问题讨论】: