纯AS3预加载器是否必须扩展MovieClip?

时间:2012-10-05 07:55:46

标签: actionscript-3 flashdevelop preloader

actionscript预加载器是否必须扩展MovieClip?

...
public class Preloader extends MovieClip 
{

    public function Preloader() 
    {
        if (stage) {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
        }
        addEventListener(Event.ENTER_FRAME, checkFrame);
        loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
        loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);

        // TODO show loader
    }
...

或者它是否也可以扩展Sprite?

3 个答案:

答案 0 :(得分:3)

预加载器只能在实际加载单独的SWF时扩展Sprite。如果使用内置预加载器制作SWF,则需要两个帧,因为Flash播放器按顺序加载帧,因此这是加载和显示SWF的一部分的唯一方法,这是预加载器工作所必需的。对于那些需要MovieClip的帧,Sprites没有帧。

答案 1 :(得分:0)

在Vesper回答之后。我做了一些小提琴

private function checkFrame(e:Event):void 
    {
        if (currentFrame == totalFrames) 
        {
            stop();
            loadingFinished();
        }
    }

Sprite无权访问currentFrame,totalFrames甚至stop方法。但是,MovieClip呢。

答案 2 :(得分:0)

是的,您可以延长Sprite

您可以使用TimerEventTimer来代替帧事件。如果您出于某种原因想要避免所有基于帧或时间的引用,您可以收听ProgressEvent。您可以在任一事件的处理程序中创建/加载和操作“预加载器”图形。

这比通常需要的更困难,而且很多重复MovieClip功能,所以你可能需要一个很好的理由去这条路。