gpt4 book ai didi

actionscript-3 - 如何正确扩展 AS3 Point 类?

转载 作者:行者123 更新时间:2023-12-04 08:26:31 26 4
gpt4 key购买 nike

我需要从我的观点中获得更多信息,所以我想我会添加一个previousX,previousY,这样我就可以获得一个deltaX和deltaY。现在,如果我制作一个简单的自包含类,这可以正常工作。

但是,我认为我想扩展 flash.geom.Point 类以从它提供的其他功能和计算中受益。

所以我扩展了 Point 并根据需要修改了 x 和 y setter 。当我编译时,我得到一个错误,这些 setter 在应该被标记为覆盖时没有被标记。所以我覆盖了,但后来我得到一个错误,说这些不会覆盖任何功能。

任何线索我搞砸了?

这是类(class):

package net.jansensan.geom
{
import flash.geom.Point;

/**
* @author Mat Janson Blanchet
*/
public class UpdatablePoint extends Point
{
private var _previousX : Number = 0;
private var _previousY : Number = 0;
private var _deltaX : Number = 0;
private var _deltaY : Number = 0;

// ********************************************************************
// [ PUBLIC METHODS ]
// ********************************************************************

public function UpdatablePoint(x:Number=0, y:Number=0)
{
super(x, y);
}

override public function toString():String
{
return "(x=" + super.x + ", y=" + super.y + ", previousX=" +
_previousX + ", previousY=" + _previousY + ", deltaX=" +
_deltaX + ", deltaY=" + _deltaY + ")";
}

// ********************************************************************
// [ GETTERS / SETTERS ]
// ********************************************************************

override public function set x(x:Number):void
{
_previousX = super.x;
super.x = x;
_deltaX = super.x - _previousX;
}

override public function set y(y:Number):void
{
_previousY = super.y;
super.y = y;
_deltaY = super.y - _previousY;
}

public function get previousX():Number
{
return _previousX;
}

public function get previousY():Number
{
return _previousY;
}

public function get deltaX():Number
{
return _deltaX;
}

public function get deltaY():Number
{
return _deltaY;
}
}
}

最佳答案

Point类不是使用 get/set-methods 实现的,而是只包含公共(public)变量:public var x : Numberpublic var y : Number .请参阅文档 here .

由于您无法覆盖任何公共(public) getter 或 setter,因此您无法检测到使用您的类的任何人何时写入这些变量。您可以做的是删除 extends Point并添加 Point实例变量到您的 UpdatablePoint。然后将 x/y 的 getter 和 setter 从 super.[x/y] 更改为 myPointInstance.[x/y]。

如果您需要从 Point 类公开更多功能,您可以轻松地包装它。 IE。假设您想使用 Point 中的“equals”方法,只需创建该方法签名的副本并使其主体包含:return myPointInstance.equals(p);

关于actionscript-3 - 如何正确扩展 AS3 Point 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9011284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com