首页
学习
活动
专区
圈层
工具
发布

Adobe
EN

Stack Overflow用户
提问于 2011-01-08 22:23:54
回答 1查看 1.2K关注 0票数 0

我有如下代码:

代码语言:javascript
复制
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日

  1. 启动事件,df_date =01月,df_dateDue =06月
  2. 再次启动事件。此时,var temp = 06 Jan (尽管df_date仍然显示01月1日),然后将df_dateDue设置为1月11日。
  3. 再次启动事件。此时var temp = 11 Jan (尽管df_date = 01 Jan),而df_dateDue则设置为1月16日。

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-08 23:49:01

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

代码语言:javascript
复制
var temp:Date = df_date.selectedDate;

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

这一行:

代码语言:javascript
复制
temp.date += 5;

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

代码语言:javascript
复制
var temp:Date = ObjectUtil.copy(df_date.selectedDate) as Date;

哦,把你的收信率提高。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4636500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档