Как исправить stage.stageWidth и stageHeight, которые будут распознаваться в Firefox 3.5? - PullRequest
0 голосов
/ 03 июня 2010

Работая на персональном флеш-сайте, я не могу понять, как выровнять положение MC на сцене в браузере Firefox. Все идет хорошо, используя Safari.

Я попробовал метод установки таймера при каждом его отключении (каждые 200 мс или около того), он проверяет, находится ли stage.stageWidth> 0. В этом случае остановите таймер и начните изменение размера на сцене , Однако это все еще не работает на Firefox MAC. (

В моем HTML-коде:

<link href="css/site.css" rel="stylesheet" type="text/css" />

Тестовая площадка

<script type="text/javascript">
    var swf = new SWFObject("main.swf", "mymovie", "100%", "100%", "10", "#000000");
    swf.addParam("allowScriptAccess", "always");
    swf.addParam("scale", "noscale");
    swf.write("flashcontent");
</script>

Я не могу найти правильный способ исправить это. Вот мой текущий код:

    public function Main()
    {
        addEventListener(Event.ADDED_TO_STAGE, handleOnStage, false, 0, true);          
    }


    private function handleOnStage(event:Event):void
    {   
        removeEventListener(Event.ADDED_TO_STAGE, handleOnStage);

        tabSWFLoader        = Vector.<String>([INTRO_SWF, BOOK1_SWF, BOOK2_SWF, PERSONAL_SWF]);

        menuItems           = new MovieClip();
        nextMC              = new Sprite(); 
        currentMC           = new Sprite(); 

        topBarMC            = new BGTopBarMC();
        bottomBarMC         = new BGBottomBarMC();
        logoMC              = new Logo();
        menuContainer       = new MovieClip();

        setReceiver();

        stage.align         = StageAlign.TOP_LEFT;
        stage.scaleMode     = StageScaleMode.NO_SCALE;

        stage.addEventListener(Event.RESIZE, handleResizeObjectsOnStage, false, 0, true);

        // Set timer to start initialize objects on stage
        stageTime = new Timer(200);
        stageTime.addEventListener(TimerEvent.TIMER, handleTime, false, 0, true);
        stageTime.start();

    }   


    private function handleTime(event:TimerEvent):void
    {
        if (stage.stageWidth > 0 && stage.stageHeight > 0) {
            initObjectsOnStage();
        }
    }


    private function handleResizeObjectsOnStage(event:Event=null):void
    {
        if (stage.stageWidth > 0 && stage.stageHeight > 0) {
            initObjectsOnStage();
        }
    }


    private function initObjectsOnStage():void
    {
        if (!isReady) {

            isReady = true;
            stageTime.stop();
            stage.removeEventListener(Event.RESIZE, handleResizeObjectsOnStage);

            // Resize dynamically bottomBarMC
            bottomBarMC.width = stage.stageWidth;
            bottomBarMC.height = stage.stageHeight;
            addChild(bottomBarMC);

            bottomBarMC.x = 0;
            bottomBarMC.y = stage.stageHeight - bottomBarMC.height;

            // Resize dynamically logo
            logoMC.x = 40;
            logoMC.y = topBarMC.height+50;
            addChild(logoMC);

            // Add listener
            logoMC.addEventListener(MouseEvent.CLICK, handleClickedLogo, false, 0, true);

            // ** In Firefox doesn't show up this menu, couldn't recognize
            menuContainer.x = 65;
            menuContainer.y = 720;
            addChild(menuContainer);
            menuContainer.addChild(menu); 

            // Get objects from Menu class
            menu.addEventListener(CustomEventCenter.OBJECT_USED, handleMenu, false, 0, true);

            // Call intro method 
            initIntro();
        }

    } 

1 Ответ

0 голосов
/ 05 июня 2010

Я использую обработчик ENTER_FRAME для прослушивания до stage.stageWidth > 0 && stage.stageHeight > 0.

  public function Main()
  {
      addEventListener(Event.ENTER_FRAME, enter_frame );
  }

  private function enter_frame(e:Event)
  {
    if ( stage.stageWidth > 0 && stage.stageHeight > 0 )
    {
      removeEventListener( Event.ENTER_FRAME, enter_frame );
      init();
    }
  }

  private function init()
  {
    // GOOD TO GO!
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...