Actionscript 3 如何从嵌套函数访问变量
我想将“galleryArr.length*400;”传递到OnAlleryLoaded函数之外,因此我创建了函数“initmyWidth”,并使用“trace(initmyWidth());”从函数外部调用它,但它得到一个错误“调用可能未定义的方法initmyWidth” 有没有办法让它在功能之外再上一层Actionscript 3 如何从嵌套函数访问变量,actionscript-3,variables,Actionscript 3,Variables,我想将“galleryArr.length*400;”传递到OnAlleryLoaded函数之外,因此我创建了函数“initmyWidth”,并使用“trace(initmyWidth());”从函数外部调用它,但它得到一个错误“调用可能未定义的方法initmyWidth” 有没有办法让它在功能之外再上一层 function onGalleryLoaded(e:Event):void { var imageX:int = 0; var imageY:in
function onGalleryLoaded(e:Event):void
{
var imageX:int = 0;
var imageY:int = 0;
for each (var image:Sprite in galleryArr)
{
var my_mc:MovieClip = new MovieClip();
my_mc.addChild(image);
parent_mc.addChild(my_mc);
my_mc.width = 400;
my_mc.height = 400;
my_mc.x -= parent_mc.width;
my_mc.y = imageY;
function initmyWidth():Number
{
var myWidth:Number = galleryArr.length * 400;
return myWidth;
}
imageX -= my_mc.width + PADDING_X;
if ( (imageX+my_mc.width) > stage.stageWidth )
{
imageX = parent_mc.width;
imageY = 0;
}
}
}
trace(initmyWidth());
嵌套函数是匿名的,不能在父函数作用域之外访问它们。因此不,您不能从外部调用它 但是你可以简单地把它作为一个类成员,并且能够毫无差别地使用它 嵌套方法并不邪恶,但它们主要是为非粘滞类型语言(例如JavaScript)设计的,在AS3中不需要使用
如果要动态创建函数,请使用嵌套函数的方法,例如var myFunc=function(){};并且可以通过将其设置为null来删除它。但在AS3中,此类函数的调用时间最长,可能会影响实际性能,因此经验法则-不要使用嵌套函数,除非有很好的理由这样做不要嵌套函数。这很有趣,因为这实际上是关于嵌套或不嵌套的,这是我如何在函数之外完成数学运算的问题,我正在寻找parent_mc.width,但它只在这里提供给我。这个问题的标题表明这个问题是关于嵌套函数和对它们的访问。这里有一个答案——将所需的函数作为类成员输出,或者如果你在一个框架中编写,只需从父函数中输出即可;“onGalleryLoaded函数的外侧”onGalleryLoaded函数的外侧始终为0