2009-11-02 36 views
0

我目前有几个movieclip,我加载到另一个movieclip container。我使用MovieClipLoader类来加载它们并使用onLoadProgressonLoadStart,onLoadInit,onLoadCompleteonLoadError听众。Flash MovieClipLoader实例行为不正确

onLoadProgess侦听器中,我侦听加载的字节和总字节数,并将该百分比放入另一个影片剪辑(我暂时放在舞台上显示加载的文本框)。问题在于,加载动画片段开始在40%加载标记上播放,并且不等待加载100%。这很奇怪,我不明白我会做错什么。这里是我的代码:

// loading icon to show progress 
var loading_icon:MovieClip = new MovieClip(); 

// load PassionPurpose.swf 
var passionPurposeLoader = new MovieClipLoader(); 
var passionPurpose:MovieClip = this.container.createEmptyMovieClip("passionPurpose", this.container.getNextHighestDepth()); 
passionPurpose._y = groupOverviewHeight; 

passionPurposeLoader.onLoadInit = function (targetMc:MovieClip) { 
trace("Init... "+PPFile); 

loading_icon._visible = false; 
loading_icon.unloadMovie(); 
} 

passionPurposeLoader.onLoadStart = function (targetMc:MovieClip) { 
loading_icon = passionPurpose._parent.attachMovie("loading_icon_ch1","loading_icon_ch1",passionPurpose._parent.getNextHighestDepth()); 

loading_icon._x = 245 - loading_icon._width/2; 
loading_icon._y = 207 - loading_icon._height/2; 

loading_icon._visible = true; 
} 

passionPurposeLoader.onLoadComplete = function (targetMc:MovieClip) { 
trace("Complete... "+PPFile); 

loading_icon._visible = false; 
loading_icon.unloadMovie(); 
} 

// progress function 
passionPurposeLoader.onLoadProgress = function(targetMc:MovieClip, loadedBytes:Number, totalBytes:Number) { 
// determine percentage 
var percentage:Number = Math.round(loadedBytes/totalBytes * 100); 

trace("Loading... "+loadedBytes+"/"+totalBytes+" "+PPFile); 
loading_icon.loading_txt.text = percentage + "%"; 

if (loadedBytes == totalBytes) loading_icon.unloadMovie(); 
} 

// there was an error loading the movieclip 
passionPurposeLoader.onLoadError = function (targetMC, errorCode) { 
trace("Error"); 
} 

有没有人有某种解释或解决方案?

回答

1

我没有太多的as2,但它似乎可以停止加载电影(passionPurpose)的第一帧,所以当第一帧加载时,它只停在那里。当加载完成后再播放电影。或onLoadStart只是暂停电影(passionMovie.gotoAndStop(1);),并在它完成(即onLoadComplete)播放它。还有一件事,你可能不需要两次load_icon的unloadMovie调用,要么将它放在onLoadComplete中,要么放在onLoadProgress中。
如果它不起作用,那么你可以尝试使它看不见,直到它完全加载。

0

正如bhups建议的那样,对已加载剪辑的第一帧进行停止操作,或者在开始加载后立即停止它们。除非您告诉他们不要,否则只要加载了框架,MovieClip就会自动播放。