AS3点比较

Nat*_*ide 1 flash comparison point actionscript-3

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

例如

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
Run Code Online (Sandbox Code Playgroud)

这看起来很奇怪而且有点无意义(双关语)
任何人都能解释为什么会这样吗?

Bar*_*klı 7

p1 == p2比较两个对象而不是对象的x和y组件.由于p1和p2是不同的对象(由新Point创建),因此p1 == p2返回false.

.equals()方法对x和y组件进行比较,使其返回true.

以下内容将返回true:

var p1:Point = new Point(1,5);
var p2:Point = p1;
trace(p1==p2);
Run Code Online (Sandbox Code Playgroud)

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