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