[英]How make null MovieClip in function?
如何使null MovieClip成為函數? 我試過了:
function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}
function two(mcref:MovieClip)
{
mcref=null;
}
但不幸的是,它不起作用,並且“ mc”在函數后不為null。
它應該可以工作,試試這個:
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;
}
}
}
這是范圍鏈問題。 如果將MovieClip傳遞給two()
函數。 實際上沒有傳遞參考值。 因此,您無法在函數中訪問引用對象。 有效值或僅在功能范圍內執行。
閱讀此: AS3 Funciton
每當函數開始執行時,都會創建許多對象和屬性。 首先,創建一個稱為激活對象的特殊對象,該對象存儲參數以及函數體中聲明的任何局部變量或函數。 您不能直接訪問激活對象,因為它是一種內部機制。 其次,將創建一個范圍鏈,其中包含Flash Player或Adobe AIR檢查標識符聲明的對象的有序列表。 每個執行的函數都有一個作用域鏈,該作用域鏈存儲在內部屬性中。 對於嵌套函數,作用域鏈以其自己的激活對象開始,然后是其父函數的激活對象。 鏈以這種方式繼續,直到到達全局對象。 全局對象是在ActionScript程序啟動時創建的,並且包含所有全局變量和函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.