首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安全地发现水平翻转的电影,而不是旋转的呢?

问如何安全地发现水平翻转的电影,而不是旋转的呢?
EN

Stack Overflow用户
提问于 2014-06-26 23:04:05
回答 1查看 168关注 0票数 0

我有两个电影在舞台上。一个是旋转180度,另一个是水平翻转(通过翻转水平命令)。我需要做的是检测一个是水平翻转。

我尝试了另一个答案(Detecting a movieclip has been Flipped horizontally on the stage in as3)中的以下函数:

代码语言:javascript
复制
function isFlippedHorizontally( obj:DisplayObject ):Boolean
   {
    return obj.transform.matrix.a / obj.scaleX == -1;
   }

   trace( isFlippedHorizontally( yourObject ) );

...but --它在这种情况下似乎不起作用,因为在这两种情况下它都返回true。

此外,是否有任何方法可以安全地检测翻转部分,相对于缩放/旋转转换?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-27 01:11:27

让我们想象一个抽象的例子:

有两个圆圈有实心填充,所以翻转的和旋转的没有视觉上的区别。

​

但是在代码中,通过使用旋转和缩放值,我们可以清楚地看到不同之处。如果第一个圆称为circle1,则称为第二个circle2。我们可以追踪它们的比例尺值和旋转值:

代码语言:javascript
复制
trace(c1.rotation); // 180
trace(c1.scaleX); // 1
trace(c1.scaleY); // 1

和

代码语言:javascript
复制
trace(c2.rotation); // 0
trace(c2.scaleX); // -1 - flipped horizontally
trace(c2.scaleY); // 1

因此,isFlippedHorizontally的函数可以如下所示:

代码语言:javascript
复制
function isFlippedHorizontally(targetObject:DisplayObject):Boolean
{
    if (targetObject.scaleX < 0)
        return true;

    return false;
}

注意,这个方法假设如果拉伸翻转图像,它仍然被计算为水平翻转。

如果您想知道该对象是否仅被翻转,而不是拉伸和旋转,请使用以下命令:

代码语言:javascript
复制
function isFlippedHorizontallyOnly(targetObject:DisplayObject):Boolean
{
    if (targetObject.scaleX == -1 && targetObject.rotation == 0)
        return true;

    return false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24441576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档