2009-11-02 4 views
0

В настоящее время у меня есть несколько мувиклипов, которые я загружаю в другой мувиклип container. Я использую класс MovieClipLoader для их загрузки и использую onLoadProgress, onLoadStart, onLoadInit, onLoadComplete и onLoadError слушателей.Экземпляр Flash MovieClipLoader ведет себя некорректно

В прослушивателе onLoadProgess я слушаю загруженные байты и суммарные байты и поместил процент в другое текстовое поле movieclip (которое я ставлю на сцену временно, чтобы показать загрузку). Вот в чем проблема: загрузочный мувиклип начинает играть на 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, либо поместить их в onLoadComplete, либо внутри onLoadProgress.
Если он не работает, вы можете попытаться сделать его невидимым, пока он полностью не загрузится.

0

Как предложил bhups, положите действие остановки на первый кадр загруженных клипов или остановите их, как только они начнут загружаться. Movieclips будет воспроизводиться автоматически, как только будет загружен кадр, если вы не сообщите им об этом.