2011-07-19 21 views
0

我遇到了一個獨特的(對我來說)並且相當令人費解的情況。我有三個值的數組。將數組級聯到as3中的次級臨時數組中

焦點[x,y,z]

這些值根據用戶輸入而改變。

然而當變化發生時,它們被記錄到一個新的數組,以測試有效改變

的我的代碼的簡化僞版本:

var temp:Array = focal; //I have even changed this to a const at times but to no avail 

//changes to array are made like thus: 
focal[1]++; 
focal[0]--; 

if(valid){ 
doStuff(); 
} else { 
focal = temp; 
} 

然而,當焦點[1] + +;焦[0] - ;等等,代碼發生。它也改變了臨時數組。

由於它改變了我的溫度,所以它不會將我的原始代碼重新設置回它以前的性質。

我從來沒有見過這樣的行爲,它的種類讓我心有餘悸。建議?

回答

3

當你做這樣的:

var temp:Array = focal; // Both array variables refer to the same array. 
,如果你想要讓你需要的所有componetns從一個複製到另一個備份或臨時數組

var baseArray : Array = [0, 0, 0]; 
var tempArray : Array = baseArray.slice(); 

baseArray[0]++; 
baseArray[1] += 2; 
baseArray[2] += 3; 

trace (baseArray); // output: 1,2,3 
trace (tempArray); // output: 0,0,0 
+0

我明白了,所以基本上我做了另一個指針。奇怪。謝謝! – SimpleRookie