如何使函数中的null MovieClip?

时间:2013-03-12 10:31:52

标签: actionscript-3

如何使函数中的null MovieClip?我试过了:

function one()
{
var mc:MovieClip=new MovieClip();
two(mc);
}

function two(mcref:MovieClip)
{
mcref=null;
}

但遗憾的是它不起作用,“mc”在函数后不为空。

2 个答案:

答案 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程序开始,包含所有全局变量和   功能