2009-09-10 60 views
1

我試圖在ActionScript中交換兩個變量。在AS3中複製一個變量

我試着使用:

a = 42 
b = 50 

tempvar = a 
a = b 
b = tempvar 

切換,但這並不工作,因爲變量仍引用原始值,所以如果我設置B = A,然後更改A,B的變化,以及。你有克隆(),但我不知道AS3類似的方法。

幫助?

回答

2

以下工作正常。當然,你沒有顯示你的所有代碼?

import flash.display.Sprite; 
public class SwapTest extends Sprite 
{ 
    public function SwapTest() 
    { 
     var a:int=42; 
     var b:int=50; 
     var temp:int=a; 
     a=b; 
     b=temp; 
     trace("a="+a); 
     trace("b="+b); 
    } 
} 

痕跡

 
a=50 
b=42 

無需克隆。即使是下面的非類型代碼,更接近你的例子給出了相同的輸出:

 var a=42; 
     var b=50; 
     var temp=a; 
     a=b; 
     b=temp; 
     trace("a="+a); 
     trace("b="+b); 

你是如何聲明a,b和tempVar?這是時間軸代碼嗎?

+0

這個工作的原因是因爲你使用像int這樣的基本類型。基元類型在賦值時複製,而像數組這樣的對象類型使用引用。 – Soviut 2011-01-08 23:01:13

2
var tempvar:uint = new uint(a); 
a = new uint(b); 
b = tempvar;