4 Replies Latest reply: Apr 23, 2011 11:07 PM by barpos RSS

    addEventListener in a function

    barpos Community Member

      Hi,

       

      Should that be avoided due to local scope factor?  function resizeDisplay() below no longer works

       


      var pixLoader:Loader = new Loader();
      pixLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, pixLoadComplete);
      pixLoader.load(new URLRequest("MicrosoftBuilding.jpg"));

       

      function pixLoadComplete(e:Event):void
      {

          // Redraw the screen upon browser resizing
          // -----------------------------------------------------
          function resizeDisplay(event:Event):void
          {
              // redisplay stage objects to reflect new stage size
              stage.scaleMode = StageScaleMode.NO_SCALE;
              backgroundPositioning(myStage.stageWidth, myStage.stageHeight);
              stage.scaleMode = StageScaleMode.SHOW_ALL;
          }
          myStage.addEventListener(Event.RESIZE,resizeDisplay);

      }

        • 1. Re: addEventListener in a function
          Ned Murphy CommunityMVP

          What should be avoided, and I know you've heard this before, is nesting functions in other functions.

          • 2. Re: addEventListener in a function
            Lee Burrows Community Member

            hi

             

            it doesnt work because you used "myStage" instead of stage

            • 3. Re: addEventListener in a function
              barpos Community Member

              Then, I'm stuck.  When, I put it outside the OnComplete listener function, the resizeDisplay gets executed unexpectedly.

               

              Any workaround to this?

               

              Regards,

               

              Ron

              • 4. Re: addEventListener in a function
                barpos Community Member

                Hmmm, the trace() line below never displays anything in the output panel when I resize the Flash movie past a test movie (Ctrl-Enter).  Come to think of it, it might be because I'm not in StageScaleMode.SHOW_ALL.  I guess I don't need that function anymore under that mode after all.

                 

                    // Redraw the screen upon browser resizing
                    // -----------------------------------------------------
                    function resizeDisplay(event:Event):void
                    {
                        trace("I'm in resizeDisplay listener");
                        // redisplay stage objects to reflect new stage size
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        backgroundPositioning(myStage.stageWidth, myStage.stageHeight);
                        stage.scaleMode = StageScaleMode.SHOW_ALL;
                    }
                    myStage.addEventListener(Event.RESIZE,resizeDisplay);
                    // -----------------------------------------------------;