私はここで設計上の問題にぶつかっていると思うので、コードの再構築をしたいと思うことを避けることができます。おそらく、skin
とavBody
を1つのクラスに結合できますか?あなたは決定することができ、今は再設計が解決策ではないと仮定しよう。 ArgumentError
を表示し、
override public function set x(value:Number, caller:*):void
{
if (caller is AvBody)
super.x = value;
}
//Error: Incompatible override.
あなたは、単にx
とy
セッターをオーバーライドすることができます:関数のオーバーロードは、AS3では不可能であるため、オーバーライドは、同一の署名を持っている必要がありますので、
残念ながら、次のような解決策も可能ではありませんそれらが呼び出された場合は、x
とy
プロパティのカスタム内部セッターを使用します。
override public function set x(value:Number):void
{
throw new ArgumentError("Can not set public 'x' property on Skin class. Set internal 'posX' property instead");
}
override public function set y(value:Number):void
{
throw new ArgumentError("Can not set public 'y' property on Skin class. Set internal 'posY' property instead");
}
internal function set posX(value:Number):void
{
super.x = value;
}
internal function set posY(value:Number):void
{
super.y = value;
}
私がよく理解していれば、皮膚と身体の両方の性質を持つオブジェクトAがあります。しかし、体だけが肌を修正すべきものです。私は正しい?それで、なぜ肌は "A"オブジェクトのプロパティであり、ボディのプロパティではありませんか? – David
ボディはおそらくフィジックスボディを表し、スキンはビュー/ムービークリップです。したがって、皮膚が身体の特性である場合、それは高い結合を生じさせるだろう。 – Shannon