如何在函数中制作 null MovieClip?我试过:
function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}
function two(mcref:MovieClip)
{
mcref=null;
}
但不幸的是,它不起作用,并且“mc”在函数后不为空。
如何在函数中制作 null MovieClip?我试过:
function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}
function two(mcref:MovieClip)
{
mcref=null;
}
但不幸的是,它不起作用,并且“mc”在函数后不为空。
它应该工作,试试这个:
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 程序开始时创建的,