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?
答案 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
。
您可以使用TimerEvent
和Timer
来代替帧事件。如果您出于某种原因想要避免所有基于帧或时间的引用,您可以收听ProgressEvent
。您可以在任一事件的处理程序中创建/加载和操作“预加载器”图形。
这比通常需要的更困难,而且很多重复MovieClip
功能,所以你可能需要一个很好的理由去这条路。