我有如下代码:
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,并且在每次调用函数时,temp都不会重新设置自己。
例: df_date =1月1日,df_dateDue =1月1日
我在这里错过了什么?
发布于 2011-01-08 23:49:01
在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;哦,把你的收信率提高。
https://stackoverflow.com/questions/4636500
复制相似问题