如何讓null MovieClip在函數中?我試過了:如何讓null MovieClip在函數中?
function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}
function two(mcref:MovieClip)
{
mcref=null;
}
但不幸的是它不起作用,並且「mc」在函數後不爲空。
如何讓null MovieClip在函數中?我試過了:如何讓null MovieClip在函數中?
function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}
function two(mcref:MovieClip)
{
mcref=null;
}
但不幸的是它不起作用,並且「mc」在函數後不爲空。
這是作用域鏈的問題。如果你將MovieClip傳遞給two()
函數。實際上不通過參考值。所以你不能在函數中訪問參考對象。驗證值或僅在函數範圍內執行。
讀取此:AS3 Funciton
在任何時間的函數開始執行時,被創建的對象的數量和 性質。首先,創建一個稱爲激活對象的特殊對象,用於存儲參數和任何局部變量 或在函數體中聲明的函數。您不能直接訪問激活對象,因爲它是一種內部機制。 其次,將創建一個作用域鏈,其中包含Flash Player或Adobe AIR檢查標識符 聲明的對象列表 。執行的每個函數的作用域鏈都是 ,存儲在內部屬性中。對於嵌套函數,作用域鏈 以其自己的激活對象開始,後面跟着它的父級 函數的激活對象。鏈條以這種方式繼續下去,直到它達到全球物體的 。全局對象在一個 ActionScript程序開始時創建,幷包含所有全局變量和 函數。
它應該工作,試試這個:
package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public var mc:MovieClip;
public function Main():void
{
mc = new MovieClip();
trace("mc : " , mc);
makeMovieClipNull();
trace("mc 2: ", mc);
}
public function makeMovieClipNull():void
{
mc=null;
}
}
}
不幸的是,它不起作用,「mc」不是空函數後,只有「目標」。 – user2160453 2013-03-12 11:03:47
我已經編輯了上面的代碼,看看它。 – Vipul 2013-03-12 12:56:59
這不是我想要的。我需要在外部函數中將MovieClip設置爲null,但是如同告訴「bitmapdata.com」,這是不可能的。 – user2160453 2013-03-12 14:24:15
爲了清楚起見,這裏的兩個答案都是正確的。這個答案解釋了爲什麼原始代碼不工作。 @Vipul下面的答案顯示瞭如何使它工作:) – 2013-03-12 17:03:05