Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何从嵌套函数访问变量_Actionscript 3_Variables - Fatal编程技术网

Actionscript 3 如何从嵌套函数访问变量

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

我想将“galleryArr.length*400;”传递到OnAlleryLoaded函数之外,因此我创建了函数“initmyWidth”,并使用“trace(initmyWidth());”从函数外部调用它,但它得到一个错误“调用可能未定义的方法initmyWidth” 有没有办法让它在功能之外再上一层

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