【问题标题】:Android Animation - applytransformation - Do a camera translate on Z axes for half the timeAndroid 动画 - applytransformation - 相机在 Z 轴上平移一半时间
【发布时间】:2013-04-17 21:46:43
【问题描述】:

我试图使用平移和旋转来制作旋转立方体。我正在使用 Google 示例中提供的名为 Rotate3dAnimation.java 的类。旋转效果很好,我正在努力在立方体上制作深度错觉,同时旋转使其离屏幕越来越近。
为此,我正在修改方法applyTransformation(float interpolatedTime, Transformation t),但问题是,立方体的面(旋转时隐藏的那个)必须在前半段时间进一步移动,在第二段时间再次靠近一半。

正在恢复:

Camera.translate(float x, float y, float z)

前半部分的 z 平移应该减小,后半部分增加。

这是我正在使用的代码:

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
    final float fromDegrees = mFromDegrees;
    float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);

    final float centerX = mCenterX;
    final float centerY = mCenterY;
    final String orientation = mOrientation;
    final Camera camera = mCamera;

    final Matrix matrix = t.getMatrix();
    camera.save();
    float midTime = getDuration()/2;
    if (mReverse) {
      camera.translate(0.0f, 0.0f, (interpolatedTime<midTime)? 
           (mDepthZ * interpolatedTime): (mDepthZ * (1.0f - interpolatedTime)));

    } else {

      camera.translate(0.0f, 0.0f, (interpolatedTime<midTime)? 
           (mDepthZ * (1.0f - interpolatedTime)): (mDepthZ * interpolatedTime));

    }
    if(orientation.equals("horizontal"))
        camera.rotateY(degrees);
    else
        camera.rotateX(degrees);
    camera.getMatrix(matrix);
    camera.restore();

    matrix.preTranslate(-centerX, -centerY);
    matrix.postTranslate(centerX, centerY);
}

但我认为这不是很好......有什么建议吗?

谢谢!

【问题讨论】:

    标签: android animation rotation cube depth


    【解决方案1】:

    我实际上遇到了同样的问题,经过一些调试后,我意识到 interpolatedTime 并不是我(我猜你)预期的那样以毫秒为单位。这很好,因此您实际上不必计算 midTime 到底是多少,您只需要知道插值的进度即可。

    要检查您是否已完成动画,只需使用

    (interpolatedTime &lt; .5)

    在你的三元语句中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多