0

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?

4

3 回答 3

3

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

于 2012-10-05T08:00:51.223 回答
0

在维斯珀的回答之后。我做了一些摆弄

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

Sprite 无法访问 currentFrame、totalFrames 甚至是 stop 方法。但是,MovieClip 可以。

于 2012-10-05T08:11:27.000 回答
0

是的,您可以扩展Sprite.

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

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

于 2012-10-05T19:14:11.197 回答