CreateJs - 从左边的距离

Posted

技术标签:

【中文标题】CreateJs - 从左边的距离【英文标题】:CreateJs - distance from left 【发布时间】:2014-07-19 23:03:19 【问题描述】:

这是图形:

http://snag.gy/aVFGA.jpg

大矩形是画布元素,小矩形是画布中的图像对象。我想找到左边的真实距离。

值是我在控制台中看到的:

regX: 564.256
regY: 41.4
scaleX: 0.4491319444444445
scaleY: 0.4491319444444445
x: 363.3333333333333
y: 409.77777777777777

所以我看到 x 不是真实的。它以某种方式与 regX 和 scaleX 相关。但我没有找到它是如何关联的。从图像中我认为 x 应该是大约 100 - 150 px。 x 越大 - 越靠右。 但是 regX 越大 - 它使矩形越向左。

因此,如果我只取差值 564.256 - 363.333 = ~200 - 矩形的左角应该在画布中间,因为画布的宽度为 400 像素。但事实并非如此,因此减法无济于事。 那么我如何从左边得到多少像素是真实的?

【问题讨论】:

【参考方案1】:

您可以使用localToGlobal 方法来做到这一点(请参阅here)。

这取决于给定属性属于哪个对象。

如果它们属于形状,并且图像/形状内的矩形从 (0,0) 开始:

var point = shape.localToGlobal(0, 0);
// this will calculate the global point of the shape's local point (0,0) 

如果他们属于舞台:

var point = stage.localToGlobal(yourRectObject.x, yourRectObject.y);
// point.x should contain the position on the canvas

您应该普遍使用这些方法,因为您的方法可能适用于当前情况,但可能会在您缩放舞台本身或将形状放入缩放/定位的容器中时中断。

【讨论】:

试过了,但它返回的 x 与该函数 x 的输入完全相同 @SPeed_FANat1c 对我来说它工作得很好。形状是否包裹在容器中? regXregYscaleXscaleY 是舞台的值还是形状的值?我假设这些是阶段值。但也许那是错误的。如果它们是形状值,您可以在形状/图像上尝试localToGlobal 方法。但你必须这样做:shape.localToGlobal(0,0)(如果图像内部的矩形 x 坐标为 0)。 我没有在代码类容器中看到,也不熟悉这个库的术语,但据我了解,形状处于阶段。我发布的那些值是形状值,而不是阶段。所以现在当我使用 shape.localToGLobal(0,0) 时,它与我的公式相同:) 谢谢 没问题。我编辑了答案,希望它更清楚。 ;-)【参考方案2】:

我想我通过试验值发现了什么:

distanceFromLeft = x - scaleX * regX;

所以得到 109.90793888888885 像素

如果有人对这个库进行了更多的工作,他们可以确认这不是偶然的。

【讨论】:

以上是关于CreateJs - 从左边的距离的主要内容,如果未能解决你的问题,请参考以下文章

在 animateCC 上的 createJS 中使用按钮键入文本

01 createJS代码作用域

使用drawRect的Createjs掩码在Safari中不起作用

createjs相关笔记

H5实例教学--从AnimateCC到CreateJS入门

createjs开发教程