是否有指針或類似於as3的概念?一個類似於as3中指針的概念?
我用的
var mc1:MovieClip;
var mc2:MovieClip();
var mcCommon:MovieClip = new MovieClip();
mcCommon["myptr"] = mc1;
mcCommon["myptr"] = mc2;
一個概念,我會在哪裏去閱讀和了解這個概念。我想獲得簡單的答案,因爲我不是as3的專家。我還在學習。
是否有指針或類似於as3的概念?一個類似於as3中指針的概念?
我用的
var mc1:MovieClip;
var mc2:MovieClip();
var mcCommon:MovieClip = new MovieClip();
mcCommon["myptr"] = mc1;
mcCommon["myptr"] = mc2;
一個概念,我會在哪裏去閱讀和了解這個概念。我想獲得簡單的答案,因爲我不是as3的專家。我還在學習。
如果你是專門詢問的代碼,首先它應該是這樣的:
var mc1:MovieClip;
var mc2:MovieClip;
var mcCommon:MovieClip = new MovieClip();
mcCommon["myptr"] = mc1;
mcCommon["myptr"] = mc2;
雖然兩個MC1和MC2實際上是零。
語法mcCommon [「myptr」]表示您在MovieClip mcCommon上創建名爲「myptr」的屬性。因此,您以後可以使用mcCommon [「myptr」]檢索此屬性的內容。最後一行實際上會覆蓋該屬性的內容(如果它當然不爲空)。你可以這樣做,因爲MovieClip類是動態的。在其他(非動態)實例上,您不能創建像這樣的屬性。
我還沒有專門使用指針在一段時間語言編碼,我不知道這正是你在問什麼,但在這裏是在回答你的問題的嘗試:
在AS3 ,對象的變量引用始終是指針,除基本類型(字符串,數字,整數和布爾值)之外,它們始終只是按值。
因此,對於基本類型,你會得到一個「按值」的行爲:
var a:String = "hello";
var b:String = a; // b is a new String, a clone of a
b += " world";
trace(a); // hello
trace(b); // hello world
到B的修改沒有修改的變量。或者也許可以說a和b是第2行之後的同一個字符串的引用,但是+ =運算符創建了一個新的字符串並將其分配給了b。如果您查看String documentation,請注意,沒有一個成員函數實際修改字符串,它們都返回新的字符串。
你會看到相同的行爲與功能簡單,非指針調用的參數:
function wont_modify(word:String):String
{
word += " world";
return word;
}
var a:String = "hello";
trace(wont_modify(a)); // hello world
trace(a); // hello
然而,對於非簡單類型,訪問被引用(被稱爲指針在其他語言):
var a:Array = [1, 2, 3];
var b:Array = a; // b is now a reference to a
b.push(4);
trace(a); // [1, 2, 3, 4]
trace(b); // [1, 2, 3, 4]
如果你想要一個簡單的類型像繩子一個「類指針」的行爲,它必須是一個類似指針的對象,您通過圍繞基準中的一員:
function will_modify(obj:Object):void
{
obj.a += " world";
}
var obj:Object = { a:"hello" }
will_modify(obj);
trace(obj.a); // hello world
字符串和數字實際上確實擴展了Object,但所有的操作符和函數調用都將它們視爲值而不是通過引用。
+1作爲有關參數傳遞參考的答案。謝謝 – Vishnu
+1謝謝你的回覆。 – Vishnu