インスタンス化されたときにオブジェクトを受け取ることができる値オブジェクトを使用しているので、次のように、新しいVOが作成されたときにデフォルト値を直接更新できます。
public class SeatSettingsVO
{
public var globalPosition:Point = new Point(0, 0);
public var dealerChipOffset:Point = new Point(0, 0);
public var chipStackOffset:Point = new Point(0, 0);
public function SeatSettingsVO(obj:Object = null)
{
if (obj)
parseSettings(obj);
}
}
このparseSettings
メソッドは、コンストラクターに渡されたオブジェクト内の既存のプロパティのみを取得するために、try / catchブロックを使用します(または、少なくともそれが意図されています)。
private function parseSettings(obj:Object):void
{
try
{
this.globalPosition = obj.globalPosition;
this.chipStackOffset = obj.chipStackOffset;
this.dealerChipOffset = obj.dealerChipOffset;
}
catch (error:Error)
{
}
}
ここで、このシナリオを考えてみましょう。新しい値オブジェクトを作成する必要がありますが、3つのプロパティのうち1つだけが定義されています。
new SeatSettingsVO({globalPosition:new Point(300, 277)})
問題はobj
、特定のプロパティ(たとえばchipStackOffset
)が含まれていない場合、初期プロパティ値(Point(0,0))を維持する代わりに、メソッドがそれをに上書きすることnull
です。
私の推測では、Objectクラスインスタンスに存在しないプロパティにアクセスしても、エラーはトリガーされませんが、null
返されます。これにより、デフォルト値が上書きされます。誰かがこの振る舞いを説明し、おそらく解決策を提案できますか?
どうもありがとうございます。