私はHaxeの新機能ですが、ActionScript 3では多くの経験があります。現在、私のフレームワークの1つをAS3からopenflに移植していますが、ゲッターやセッターにこだわったもの。 フレームワークコンポーネントの中には、既にwidthとheightのフィールドを定義しているopenfl.display.DisplayObject(Sprite、正確には)から拡張されています。しかし、私のComponentBaseクラスでは、これらのプロパティをオーバーライドする必要があります。 AS3では、私はこのようにそれをやっている:Haxeでgetterとsetterを正しくオーバーライドする方法
private var _width:Number = 0;
override public function get width():Number {
return _width;
}
override public function set width(value:Number):void {
_width = value;
}
しかし、それはhaXeのでは動作しません。このようにすれば
override function get_width():Float {
return _width;
}
物理フィールドが必要なのでコンパイルされません。しかし、幅と高さの値は、基底クラスですでに定義されているため、再定義できません。
基本クラスで定義されている値 'width'と 'height'を使用しない理由を尋ねることがあります。これは、ゲッター/セッターアクセサではなく直接アクセスする必要がある場合があるためです。たとえば、幅と高さの設定子の中にlayout()メソッドを呼び出すことがありますが、何度も計算してレイアウト()を1回呼び出すだけです。
今はJavaスタイルのゲッターとセッターを使用してジョブを完成させることにしましたが、これは最良の方法ではありません。例えば。
public function setWidth(value:Float):Void {
_width = value;
}
だから、質問は:それはhaXeのゲッターとセッターは、それらがアクセスすることになっているとは異なる名前を持ついくつかの値を使用することが可能でしょうか?
多分私に何かが不足していますか?親がgetterでフィールドを実装している場合は、getfltisplayDisplayObjectが幅のオーバーライドに対して機能します。http://try.haxe.org/#e4d2c –