Actionscript 3 错误:访问AS3中未定义的属性

Actionscript 3 错误:访问AS3中未定义的属性,actionscript-3,flash,Actionscript 3,Flash,我正在尝试学习ActionScript3作为我的第一种编程语言(在此之前,我只在PHP上做过一些小动作) 我有以下代码: package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; /**

我正在尝试学习ActionScript3作为我的第一种编程语言(在此之前,我只在PHP上做过一些小动作)

我有以下代码:

    package 
{
    import flash.display.Bitmap;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.text.TextField;

    /**
     * ...
     * @author Mattia Del Franco
     */
    [Frame(factoryClass="Preloader")]
    public class Main extends Sprite 
    {
        [Embed(source = "img/pgnew.png")]
        internal var MyImage:Class;
        // La riga embed importa l'immagine, la riga sotto la assegna ad una classe chiamata MyImage

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point

            trace ("Hello World!");
            var myBitmap:Bitmap = new MyImage; //nuova variabile myBitmap al quale viene assegnato la creazione di un nuovo MyImage (trattato come un oggetto)
            addChild( myBitmap );

            var writeText:TextField = new TextField();
            writeText.text = "Ciao Mondo!";
            this.addEventListener(MouseEvent.CLICK, function(){
            addChild(writeText);
            var clicked:Boolean = true;
            return clicked;
            });

            this.addEventListener(MouseEvent.CLICK, function() {
                if (clicked == true) {
                removeChild(writeText);
            } else {
                addChild(writeText);
            }
            });

        }

    }
}
在第二个EventListener中,我试图获取clicked的布尔值(在第一个EventListener中指定),但当我调试此程序时,出现以下错误:

列:9错误:已单击对未定义属性的访问。 如果(单击==true){


为什么会发生这种情况?

无法访问“单击”变量的原因是该变量位于不同的作用域中。在函数(第一个事件侦听器)中声明变量时,只能从该函数中访问该变量。第二个事件侦听器无法访问该变量

以下是解决此问题的一个好方法:

       var clicked:Boolean = false;

        var writeText:TextField = new TextField();
        writeText.text = "Ciao Mondo!";
        this.addEventListener(MouseEvent.CLICK, function(){
        addChild(writeText);          
       clicked = true;
        return clicked;
        });

        this.addEventListener(MouseEvent.CLICK, function() {
            if (clicked == true) {
            removeChild(writeText);
        } else {
            addChild(writeText);
        }
        });