Flash Actionscript 3.0 Экран загрузки - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь заставить загрузочный экран работать во Flash. Вот как настроен мой проект:

  • Вся игра происходит в «Уровне 1», который настроен на множество различных сцен: «Уровень 0», «Уровень 1» и т. Д. Его код запускается в файле «.as»

  • Я попытался реализовать простой экран загрузки (с индикатором выполнения) в новом слое «Preloader». Его код запускается в слое «Actions».

Я понимаю, что помещать код Preloader в его "Actions" было не самой лучшей идеей, потому что у меня сначала был 0-й уровень загрузки файла ".as" уровня 1. Таким образом, слои «Preloader» и «Layer 1» пытались запускаться одновременно. Это вызвало проблемы.

Теперь я попытался поместить Preloader в собственную сцену. Это не работает.

Вот код, который я пытался использовать для Preloader - версия "scene":

        // This function loads the Preloader
    public function loadPL(event:Event) {
        // Load the Scene associated with the Preloader
        this.gotoAndStop(1, "PL");


        // Prevent the MovieClip (game) from playing right away
        stop();

        // Add an EventListener that calls the 'loading()' function
        this.addEventListener(Event.ENTER_FRAME, loadingPL);


    } // End of 'loadPL()' method               

        // 'loading()' function
            // This function calculates how much of the game has been loaded vs. how much data
            // the game contains. The loading progress bar is resized accordingly.
        public function loadingPL(e:Event):void{
            // How much data does the game have in all?
            var totalData:Number = this.stage.loaderInfo.bytesTotal;

            // How much data has been loaded so far?
            var loadedData:Number = this.stage.loaderInfo.bytesLoaded;

            // Scale the 'plBarIns' according to the loadedData:totalData ratio
            plBarIns.scaleX = loadedData/totalData;

            // If the 'loadedData' == 'totalData' (all of the game's data has been loaded), allow
                // the game to play
            if (loadedData == totalData) {
                play();

                // Remove the EventListener that calls the 'loading()' function. It's not needed now
                this.removeEventListener(Event.ENTER_FRAME, loadingPL);
            }
        }

Может ли кто-нибудь мне помочь?

Спасибо, Christian

1 Ответ

2 голосов
/ 09 марта 2012

Вам нужно поместить свой предварительный загрузчик в кадр 1, а остальную часть проекта запустить в кадре 2. После этого вам нужно настроить параметры ActionScript, чтобы он знал, что все ваши классы должны загружаться во кадр 2 вместо кадра 1.

Вот какие настройки нужно изменить:

  1. Файл> Настройки ActionScript ...
  2. Изменить "Экспорт классов в кадре:" на 2
  3. Заменить "Связывание по умолчанию:" на Объединено в код

Ваша информация о загрузчике теперь должна возвращать правильный прогресс загрузки файла, а не мгновенно переходить к завершению.

...