【发布时间】:2010-06-20 19:00:14
【问题描述】:
我在补间时尝试围绕外部点旋转矩形失败。我正在尝试将红色矩形的顶部锁定到线,同时它从左到右补间并从 0º 旋转到 90º。
alt text http://www.freeimagehosting.net/uploads/0b937c92e6.png
上图显示了补间的 3 种状态。状态 1 显示直线开头的红色矩形,没有角度。状态 2 显示红色矩形沿线的一半补间,角度为 45º,也是总角度 90º 的一半。状态 3 显示补间的最终位置,其中红色矩形的角度为 90º,并位于线条的边缘。
似乎我遇到的问题是,在补间时,旋转导致红色矩形的顶部与黑线失去同步。
这是我的代码不起作用,但希望能让您更清楚地了解我正在尝试的内容。
var angle:Number = 90;
var previousAngle:Number = 0;
var distanceObject:Object = new Object();
distanceObject.distance = line.width;
distanceTween = new Tween(distanceObject, "distance", None.easeNone, 0, distanceObject.distance, 5, true);
distanceTween.addEventListener(TweenEvent.MOTION_CHANGE, tweenHandler);
function tweenHandler(evt:TweenEvent):void
{
var angleShift:Number = (angle / distance) * distanceObject.distance;
//1:tween RedBox position
redBox.x = line.x + line.width * distanceObject.distance;
//2:tween RedBox angle
var externalPointMatrix:Matrix = redBox.transform.matrix;
MatrixTransformer.rotateAroundExternalPoint(externalPointMatrix, 0 + redBox.width * distanceObject.distance, 0, angleShift - previousAngle);
redBox.transform.matrix = externalPointMatrix;
previousAngle = angleShift;
}
【问题讨论】:
-
图片链接好像坏了
-
为我工作。不过,加载需要一段时间。它只有 25kb,所以服务器很忙:freeimagehosting.net/uploads/0b937c92e6.png
-
假设我正在尝试做的事情是不可能的是否公平?
-
您是否尝试过为此使用变换矩阵?我不认为这是不可能的——你可能只需要玩一会儿。我可能会沿着 enterframe 路线走,每次都更新 x 位置和剪辑的变换
-
是的,我尝试过手动操作,但数学太复杂了(至少对我来说是这样),我无法让它工作。
标签: actionscript-3 rotation alignment tween