使假预加载器移动得更慢

时间:2012-03-27 12:28:03

标签: flash actionscript actionscript-2

所以我有一个假的预加载器......实际上并没有预加载,只是做了'动作'。我的问题是它以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 个答案:

答案 0 :(得分:1)

好吧,坦率地说,这不是一个假装载机。

他们在教程网站上为您提供了一个完美原创且编码良好的预加载器。

它快速移动的原因是因为电影已经加载了。如果尚未加载,您将能够看到显示加载量的预加载器。

要查看预加载器的外观(即模拟加载操作),当您从Flash运行影片时(Windows键盘快捷键为Ctrl + Enter),请转到视图>下载设置并选择要模拟的速度下载。然后单击“模拟下载”(或再次按Ctrl + Enter)。您将看到电影将如何加载到互联网连接上。

P.S。:我很惊讶教程没有提到这个,因为当我学习AS2并且我看了一个预加载器教程时,它的代码几乎相同,但也有这个解释。

P.S。 2:为什么不学习AS3而不是(几乎)过时的AS2?

答案 1 :(得分:0)

看起来它实际上对主电影的加载做出了反应,但是(我猜是)当加载器代码实际运行时,电影已加载,这就是它如此快速的原因。

如果你想假装一个加载时间,设置一个定时器每隔200ms运行一次,并在3秒后停止它(使它在整个过程中更新加载状态)。

编辑:

这可以帮助您设置间隔计时器 - 请参阅标题为“每隔一段时间重复做一次”的部分:

http://flash-creations.com/notes/actionscript_timersanddelays.php

(完成后不要忘记清除计时器!)

或者,由于您每帧都运行此代码,因此您可以将文档的每秒帧数用作时间间隔,并执行以下操作:

fps = ...

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

在函数中。

编辑:

这是一些使用计时器使进度条增长的代码。要运行它,只需创建一个新的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);
}