Tôi đến để cần thêm một chút thông tin từ các điểm của tôi, vì vậy tôi nghĩ rằng tôi muốn thêm một X trước đó, trước đó để tôi có thể có được deltaX và deltaY. Bây giờ, điều này làm việc tốt nếu tôi thực hiện một lớp học khép kín đơn giản.Làm cách nào để mở rộng lớp AS3 đúng cách?
Tôi nghĩ, tuy nhiên, tôi muốn mở rộng lớp flash.geom.Point để hưởng lợi từ các chức năng và tính toán khác mà nó cung cấp.
Vì vậy, tôi đã mở rộng Điểm và sửa đổi các trình cài đặt x và y khi cần. Khi tôi biên dịch, tôi nhận được một lỗi rằng những người định cư không được đánh dấu để ghi đè khi họ nên được. Vì vậy, tôi ghi đè lên, nhưng sau đó tôi nhận được một lỗi nói rằng những điều này không ghi đè lên bất kỳ chức năng.
Bất kỳ đầu mối nào tôi đã sửa chữa?
Đây là lớp:
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;
}
}
}
bạn có thể đưa văn bản chính xác của lỗi vào cả hai trường hợp không? Có và không có câu lệnh 'override'. Bạn có thể ghi đè thêm một hàm. – lunixbochs