无法让这个预加载器工作(没有负载条)

时间:2014-04-04 17:09:37

标签: actionscript-3 flash-cs5

所以我试图为我的flash文件安装一个基本的预加载器,其中的movieclip的文本会根据文件的加载百分比而变化。通过文本,我的意思是它讲述了一个简短的故事,因为文件的主要部分加载了。不仅仅是%loading的数字表示。

我搜索过搜索和搜索,但我发现的所有内容都只使用了我不想要的进度条!

我的flash文件是三帧,第一帧是:

var amountLoaded:Number = Math.round(this.getBytesLoaded()/this.getBytesTotal() * 100);

preloadText.gotoAndStop(Math.ceil(amountLoaded));

第二帧是:

if(_root.getBytesLoaded() == _root.getBytesTotal()) {
gotoAndPlay(3);
}
else {
gotoAndPlay(1);
}

第三个是文件的实际肉和土豆,它起作用。

问题是,我得到了这些编译错误

Scene 1, Layer 'actions', Frame 2, Line 1 1180: Call to a possibly undefined method getBytesLoaded.
Scene 1, Layer 'actions', Frame 2, Line 1 1180: Call to a possibly undefined method getBytesTotal.

这让我感到沮丧!

2 个答案:

答案 0 :(得分:0)

您是否正在使用舞台的文档类? MovieClip(root)用于从文档类的舞台框架或子框架调用文档类。所以,MovieClip(root).getBytesLoaded();

答案 1 :(得分:0)

这是在时间轴上以各种帧编码而不是将所有代码保存在一个外部.AS文件中的问题,该文件作为所有帧中所有内容的单个控制点。现在,您的一些代码存在丢失范围的风险。示例是..第5帧中的变量A对于第6帧中的变量B没有任何意义,因此它们无法一起工作等等。

无论如何,这可能会有所帮助。我很久没有使用时间轴代码了,但我确信enterFrame会像这样工作:

第1帧:

stop(); //stop here until load completes

var amountLoaded:int; //is now Integer not Number; 

//run function to update as the movie loads
addEventListener(Event.ENTER_FRAME, onFrameEnter);

function onFrameEnter(event:Event):void 
{
    amountLoaded = this.getBytesLoaded()/this.getBytesTotal() * 100;

    //show number in textfield called "load_amount"
    load_amount.text = String(amountLoaded) + " %";

    //update messages MC to new frame number 
    //preloadText.gotoAndStop(amountLoaded);

    //checks status of SWITCH element and update according to the found case
    switch (amountLoaded)
    {
       case 0:
       preloadText.gotoAndStop(1); //frame 1

       case 25:
       preloadText.gotoAndStop(2); //frame 2

       case 50:
       preloadText.gotoAndStop(3); //frame 3

       case 75:
       preloadText.gotoAndStop(4); //frame 4

    }

    //if Loaded is equal-to/greater than Total assume ready for frame 3
    if (bytesloaded >= bytestotal) 
    {
        removeEventListener(Event.ENTER_FRAME, onFrameEnter);
        this.gotoAndPlay(3);
            //removeChild(preloadText); //consider this since wont be needed on Frame 3

    }

}

确保在创建文本字段时... - 它被称为" amount_loaded"作为实例名称 - 您的字体是嵌入的。 窗口 - > 属性 - >(向下滚动到字符)并选择字体+单击嵌入在它的旁边。当嵌入选项出现时,请确保勾选数字和标点符号。祝你好运