Экземпляр Flash MovieClipLoader ведет себя некорректно - PullRequest
0 голосов
/ 02 ноября 2009

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

В прослушивателе 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");
}

У кого-нибудь есть какое-то объяснение или решение?

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Я не сильно отношусь к as2, но, кажется, вы можете поставить остановку в первый кадр загружаемого фильма (passionPurpose), поэтому при загрузке первого кадра он останавливается только там. И когда загрузка будет завершена, начните воспроизведение фильма. Или в onLoadStart просто приостановите фильм (passionMovie.gotoAndStop(1);) и, когда он завершится (т.е. onLoadComplete), воспроизведите его. И еще одна вещь, вам, вероятно, не нужно два вызова unloadMovie для loading_icon, либо поместите его в onLoadComplete или внутри onLoadProgress.
Если это не сработает, вы можете попытаться сделать его невидимым до полной загрузки.

0 голосов
/ 13 ноября 2009

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

...