我有两个电影在舞台上。一个是旋转180度,另一个是水平翻转(通过翻转水平命令)。我需要做的是检测一个是水平翻转。
我尝试了另一个答案(Detecting a movieclip has been Flipped horizontally on the stage in as3)中的以下函数:
function isFlippedHorizontally( obj:DisplayObject ):Boolean
{
return obj.transform.matrix.a / obj.scaleX == -1;
}
trace( isFlippedHorizontally( yourObject ) );...but --它在这种情况下似乎不起作用,因为在这两种情况下它都返回true。
此外,是否有任何方法可以安全地检测翻转部分,相对于缩放/旋转转换?
发布于 2014-06-27 01:11:27
让我们想象一个抽象的例子:
有两个圆圈有实心填充,所以翻转的和旋转的没有视觉上的区别。

但是在代码中,通过使用旋转和缩放值,我们可以清楚地看到不同之处。如果第一个圆称为circle1,则称为第二个circle2。我们可以追踪它们的比例尺值和旋转值:
trace(c1.rotation); // 180
trace(c1.scaleX); // 1
trace(c1.scaleY); // 1和
trace(c2.rotation); // 0
trace(c2.scaleX); // -1 - flipped horizontally
trace(c2.scaleY); // 1因此,isFlippedHorizontally的函数可以如下所示:
function isFlippedHorizontally(targetObject:DisplayObject):Boolean
{
if (targetObject.scaleX < 0)
return true;
return false;
}注意,这个方法假设如果拉伸翻转图像,它仍然被计算为水平翻转。
如果您想知道该对象是否仅被翻转,而不是拉伸和旋转,请使用以下命令:
function isFlippedHorizontallyOnly(targetObject:DisplayObject):Boolean
{
if (targetObject.scaleX == -1 && targetObject.rotation == 0)
return true;
return false;
}https://stackoverflow.com/questions/24441576
复制相似问题