1

我想知道为什么不能比较相等的点并使用'=='显示为相等

例如

var p1:Point = new Point( 1, 5 );
var p2:Point = new Point( 1, 5 );

trace( p1 == p2 )                   //false
trace( p1.x == p2.x, p1.y == p2.y ) //true true
trace( p1.equals( p2 ))             //true

这似乎很奇怪而且有点毫无意义(双关语)
有人可以解释为什么会这样吗?

4

1 回答 1

7

p1 == p2比较两个对象,而不是对象的 x 和 y 分量。由于 p1 和 p2 是不同的对象(由新点创建)p1 == p2返回 false。

.equals()方法对 x 和 y 分量进行比较,因此它返回 true。

以下将返回 true :

var p1:Point = new Point(1,5);
var p2:Point = p1;
trace(p1==p2);

因为 p1 和 p2 实际上是同一个对象。

于 2012-10-04T00:42:49.060 回答