Adobe flex dateField

时间:2011-01-08 22:23:55

标签: flex adobe 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都是dateFields。

好的,所以我第一次运行它,它运行正常; df_date保持不变,df_dateDue设置为df_date之后的5天。但是,下次我运行它时,df_dateDue从df_date增加10天,下一次增加15,依此类推。

因此,逐步执行代码显示df_date已经以某种方式链接到temp var,并且每次调用函数时temp var都不会重置自身。

示例:df_date = 01 Jan,df_dateDue = 01 Jan。

  1. 点火活动,df_date = 01 Jan,df_dateDue = 06 Jan

  2. 再次开火。此时,var temp = 06 Jan(即使df_date仍然显示01 Jan),然后df_dateDue设置为1月11日

  3. 再次开火。此时var temp = 11 Jan(即使df_date = 01 Jan),然后df_dateDue设置为1月16日

  4. 我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

在Flex / AS中,包含对象的变量实际上只是指向某些内存空间的指针。 Flex中的日期是对象,而不是本机类型。这一行:

var temp:Date = df_date.selectedDate;

创建指向现有日期对象的新指针。它不会创建副本。

这一行:

temp.date += 5;

递增dateObject的date属性。指向该日期对象的所有引用都将更新。尝试使用objectUtil.copy

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

哦,让你的录取率上升。