2011-01-08 7 views
0

次のように私はいくつかのコードを持っている:本質的にはアドビフレックスのDateField

private function onComboChange(evt:Event):void { 
    var temp:Date = df_date.selectedDate; 
    temp.date += 5; 
    df_dateDue.selectedDate = new Date(temp); 
} 

を、私はdf_dateで選択した日付に5日を追加し、df_dateDueにその日付を入れしようとしています。これは、コンボボックス上のEventListenerを介して起動します。 df_dateとdf_dateDueの両方がdateFieldです。

OK、これを初めて実行すると正常に動作します。 df_dateは同じままで、df_dateDueはdf_dateの5日前に設定されます。しかし、次に実行するときには、df_dateDueはdf_dateから10日増分し、次回は15倍増分します。

コードをステップ実行すると、何らかの形でdf_dateがtemp varにリンクされ、temp varが関数が呼び出されるたびにリセットされないことが示されます。

例:イベントオフdf_date = 1月1日、df_dateDue = 1月1日

  1. 火災、df_date = 1月1日、再びイベントオフdf_dateDue = 1月6日

  2. 火災。この時点では、var temp = 06 Jan(df_dateはまだ01 Janと表示されます)でもdf_dateDueは11に設定されます。

  3. イベントを再度オフにします。この時点するvar温度で= 1月11日(さえdf_date = 1月1日が)、そしてdf_dateDueは、その後1月16日

に設定されている私はここで何をしないのですか?

答えて

2

Flex/ASでは、オブジェクトを含む変数は実際には一部のメモリ空間へのポインタに過ぎません。 Flexの日付は、ネイティブタイプではなくオブジェクトです。この行:

var temp:Date = df_date.selectedDate; 

既存の日付オブジェクトへの新しいポインタを作成します。コピーを作成しません。

このライン:

temp.date += 5; 

は、Dateオブジェクトの日付プロパティをインクリメントします。その日付オブジェクトを指すすべての参照が更新されます。試してみてくださいobjectUtil.copy

var temp:Date = ObjectUtil.copy(df_date.selectedDate) as Date; 

ああ、受け入れ率をアップしてください。

+0

お返事ありがとうございます。 ObjectUtilはDateオブジェクトをコピーできないようだから、以下の変更を加えなければなりませんでした。object:Object = ObjectUtil.copy(view.df_date); var d:Date = temp.selectedDate; – JonoB

+0

@jonoBあなたはたぶん1行にキャストできました。私は私の答えを更新します。 – JeffryHouser

関連する問題