Actionscript 3 无法使此预载器工作(无负载杆)

Actionscript 3 无法使此预载器工作(无负载杆),actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,因此,我试图为我的flash文件提供一个基本的预加载程序,其中包含一个movieclip,该movieclip的文本根据文件加载的百分比而变化。说到文本,我的意思是,它讲述了一个小故事,作为文件加载的主要部分。不仅仅是加载百分比的数字表示 我搜索了又搜索又搜索,但我找到的所有东西都只使用了进度条,这是我不想要的 我的flash文件有三帧,第一帧有: var amountLoaded:Number = Math.round(this.getBytesLoaded()/this.getBytesTo

因此,我试图为我的flash文件提供一个基本的预加载程序,其中包含一个movieclip,该movieclip的文本根据文件加载的百分比而变化。说到文本,我的意思是,它讲述了一个小故事,作为文件加载的主要部分。不仅仅是加载百分比的数字表示

我搜索了又搜索又搜索,但我找到的所有东西都只使用了进度条,这是我不想要的

我的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.

这让我快疯了

您是否在舞台上使用文档类?MovieClip(root)是用于从阶段框架或文档类的子级调用文档类的对象。所以,MovieClip(root.getBytesLoaded()

这是在时间轴上的不同帧中编码的问题,而不是将所有代码保存在一个外部.AS文件中,作为所有帧中所有内容的单个控制点。现在,您的一些代码有失去作用域的风险。例如。。第5帧中的变量A对第6帧中的变量B没有任何意义,因此它们不能一起工作,等等

不管怎样,下面这个可能会有帮助。我已经很长一段时间没有在代码中使用timeline了,但我相信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”作为实例名
-您的字体已嵌入窗口-->属性-->(向下滚动至字符)并选择字体,然后单击旁边的嵌入。当出现嵌入选项时,请确保勾选数字和标点符号。祝你好运

哦,我没有加载任何外部文件-前两个文件是我从另一个站点复制的。他们使用了一个加载条,我去掉了它,用带文本的movieclip替换了它。我制作了100帧长的剪辑,因此加载的文件的百分比将使剪辑中的帧提前。我肯定不是一个ActionScriptWiz。我认为这可能更接近我想要的-但我认为您提供的示例只是将%loaded作为排序文本字符串返回?我使用的movieclip是一些根据加载量(0%、25%在第25帧、50%在第50帧等)变化的消息,它们讲述了一个简短的故事。可以说,我有一种感觉,它就在我的舌尖上。我明白你的意思。总共有多少个不同的消息帧?可以尝试使用if/else语句根据“amountLoaded”更改MessageMC中的帧。这将在enterFrame函数中,因为有四个,所以可以将movieclip设置为四帧而不是100帧,并将其设置为第1帧=0%加载,第2帧=25%等等?哦,我编辑得太快了。通过If/Else检查,四个是可管理的。我假设最坏的情况(可能是100帧动画),所以代码期望每百分比有一帧。是的,你可以让它只有4帧长,你所说的仍然有效。让我在几分钟内为您演示如何在新编辑中进行编辑。