2011-01-08 2 views
0

나는 몇 가지 코드가 있습니다. 이것은 combobox에있는 EventListener를 통해 시작됩니다. df_date 및 df_dateDue는 모두 dateFields입니다.어도비 플렉스의 dateField

좋아요, 그래서 이것을 처음 실행해도 괜찮습니다. df_date는 동일하게 유지되고 df_dateDue는 df_date를 5 일 지나간 것으로 설정됩니다. 그러나 다음에 실행하면 df_dateDue가 df_date에서 10 일 증가하고 다음에 15 번 증가합니다.

코드를 살펴보면 df_date가 temp var에 연결되어 있고 temp var이 함수가 호출 될 때마다 자체가 재설정되지 않는다는 것을 보여줍니다.

예 : 이벤트 오프 df_date 01으로 1 월, 2 df_dateDue = 1월 1일

  1. 화재, df_date 01으로 1 월, 2 다시 이벤트 오프 df_dateDue = 1월 6일

  2. 화재. 이 시점에서 var temp = 06 Jan (df_date가 여전히 01 Jan을 표시 함에도 불구하고) df_dateDue는 11 Jan로 설정됩니다.

  3. 이벤트를 다시 시작합니다. 이 시점 VAR 온도에서 = 11 월은 (심지어 01 = df_date 월하지만), 그리고 df_dateDue은 내가 여기 실종 무엇 1월 16일

로 설정?

답변

2

Flex/AS에서 객체를 포함하는 변수는 실제로 일부 메모리 공간을 가리키는 포인터입니다. Flex의 Date는 기본 유형이 아니라 Object입니다. 이 줄은

var temp:Date = df_date.selectedDate; 

기존 날짜 개체에 대한 새 포인터를 만듭니다. 복사본을 만들지 않습니다.

이 줄 :

temp.date += 5; 

는 dateObject의 날짜 속성을 증가시킵니다. 해당 날짜 객체를 가리키는 모든 참조가 업데이트됩니다. 사용해보십시오 objectUtil.copy

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

아, 그리고 귀하의 합격률을 받으십시오.

+0

답변 해 주셔서 감사합니다. ObjectUtil이 Date 객체를 복사 할 수 없기 때문에 다음과 같이 변경해야했습니다. object.var temp : Object = ObjectUtil.copy (view.df_date); var d : 날짜 = temp.selectedDate; – JonoB

+0

@jonoB 당신은 아마 그것을 한 줄에 넣을 수 있습니다. 내 대답을 업데이트 할게. – JeffryHouser