繁体   English   中英

如何使null MovieClip成为函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM