Сделать фальшивый прелоадер медленнее - PullRequest
0 голосов
/ 27 марта 2012

Так что у меня есть фальшивый предзагрузчик, который на самом деле не загружается, а просто выполняет действие.моя проблема доходит до 100% слишком быстро.Так как на самом деле ничего не загружается, как мне это замедлить, чтобы «полная загрузка» заняла около 3 секунд?

код ниже ..

function onEnterFrame(){
// Calcules the max width value of the line
maxWidth = _x*2;

loaded = (_root.getBytesLoaded()/_root.getBytesTotal())*100;

// Percentage to output on the percentage textbox
per = Math.round(loaded) + "%";

// Clear this movieclip for drawing
this.clear();

// Draw the white line:
this.lineStyle(1,backLineColor,100);
this.moveTo(0,0);
this.lineTo(Math.abs(Stage.width-maxWidth),0);

// Draws the black line
this.lineStyle(1,frontLineColor,100);
this.moveTo(0,0);
this.lineTo(Math.abs((Stage.width-maxWidth)*(loaded/100)),0);

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Хорошо, откровенно говоря, это не поддельный предварительный загрузчик.

Они дали вам совершенно оригинальный и хорошо закодированный предварительный загрузчик на учебном сайте.

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

Чтобы посмотреть, как будет выглядеть предварительный загрузчик (т.е. для имитации действия загрузки), при запуске фильма изFlash (сочетание клавиш Windows - Ctrl + Enter), перейдите в меню «Просмотр»> «Параметры загрузки» и выберите скорость для имитации загрузки.Затем нажмите «Simulate Download» (или просто снова нажмите Ctrl + Enter).Вы увидите, как фильм будет загружаться при подключении к Интернету.

PS: я удивлен, что в руководстве не было упомянуто об этом, потому что когда я изучал AS2 и смотрел учебник перед загрузчиком, он имелпочти идентичный код, но также это объяснение.

PS 2: Почему бы не изучить AS3 вместо (почти) устаревшего AS2?

0 голосов
/ 27 марта 2012

Похоже, что он действительно реагирует на загрузку основного фильма, но (я предполагаю) к тому моменту, когда код загрузчика фактически запускает фильм, был загружен, именно поэтому он идет так быстро.

Если вы хотите подделать время загрузки, настройте таймер для запуска каждые 200 мс или около того и остановите его через 3 секунды (заставляя обновлять состояние загрузки по пути).

EDIT:

Это должно помочь вам установить интервальный таймер - см. Раздел «Делать что-то повторно с интервалами»:

http://flash -creations.com / замечания / actionscript_timersanddelays.php

(не забудьте очистить таймер, когда закончите!)

Или, поскольку вы запускаете этот код каждый кадр, вы можете использовать кадры документа в секунду в качестве временного интервала и сделать что-то вроде:

fps = ...

if (i * (1/fps) < 3)
{
    loaded = (i * (1/fps)) / 3 * 100;
    i++;
}

в функции.

EDIT:

Вот некоторый код, который использует таймер для увеличения индикатора выполнения. Чтобы запустить его, просто создайте новый файл Flash (ActionScript 2.0) и добавьте его в действия первого кадра.

////////////////////////////////////////////////////////
// set up the properties of the load-bar
////////////////////////////////////////////////////////

// set the width in pixels of the load bar
// and the X and Y coordinates it should start at
var loadBarWidth = 100;
var loadBarX = 200;
var loadBarY = 100;


////////////////////////////////////////////////////////
// set-up a timer to fake loading of the movie clip
////////////////////////////////////////////////////////

// set how often in milliseconds the timer should run
var repetitionPeriod = 100;
// set how long we want the timer to run (in milliseconds)
var timerLength = 3000; // 3000 milliseconds = 3 seconds
// varaible to hold how long we've been running
var runTime = 0;

// start the timer
var intervalHandle = setInterval(_root, "intervalCallback", repetitionPeriod);

// callback function to run every repetition period of the timer
function intervalCallback()
{
    // add the latest inverval to the total we've run
    runTime += repetitionPeriod

    // if we've run the full amount of time
    // then stop the interval timer
    if (runTime >= timerLength)
    {
        clearInterval(intervalHandle);
    }

    // update our load bar
    // Percentage to output on the percentage textbox
    //per = Math.round(loaded) + "%";

    // draw a line
    this.lineStyle(1, frontLineColor);
    this.setRGB(255,255,255);
    this.moveTo(loadBarX,loadBarY);
    this.lineTo(loadBarX + runTime/timerLength * loadBarWidth, loadBarY);
}
...