如何使函数中的null MovieClip?我试过了:
function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}
function two(mcref:MovieClip)
{
mcref=null;
}
但遗憾的是它不起作用,“mc”在函数后不为空。
答案 0 :(得分:1)
它应该有效,试试这个:
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;
}
}
}
答案 1 :(得分:1)
这是范围链问题。如果您将MovieClip传递给two()
函数。实际上没有传递参考值。所以您无法访问函数中的引用对象。有效值或仅在函数范围内执行。
请阅读:AS3 Funciton
任何时候一个函数开始执行,一些对象和 属性已创建。首先,一个称为激活的特殊对象 创建了一个存储参数和任何局部变量的对象 或在函数体中声明的函数。你无法访问 直接激活对象,因为它是一个内部机制。 其次,创建一个包含有序列表的范围链 Flash Player或Adobe AIR检查标识符的对象 声明。每个执行的函数都有一个范围链 存储在内部属性中。对于嵌套函数,作用域链 从它自己的激活对象开始,然后是它的父对象 函数的激活对象。链条以这种方式继续,直到 它到达全球对象。全局对象是在创建时创建的 ActionScript程序开始,包含所有全局变量和 功能