PDA

Просмотр полной версии : Неприятности с MovieCLipLoader


in4core
01.11.2009, 23:12
Товарищи такая проблема возникла :

Есть контент, гружу через MovieClipLoader, изначально контент имеет свойство _visible = false; Ну а в событии onLoadInit , данное свойство преобретает значение на true соответсвенно.

Проблема : если тестирую мувик через Simulate Download ( скорость 32 кб, объем загрузки 100 кб), то уже на 50% загрузки ( как показывает полоска лоадера) КЛИП меняет свойство на _visible = true; Затем полоска лоадера доходит до 100%, клип исчезает на секунду, и потом видимо происходит LoadInit и он снова появляется. С чем связаны такие аномалии?
Прелоадер сделан так по старинке: 100 кадров.

.....
_mc._visible = false;
_mcl.onLoadInit = function() { _mc._visible = true; }
_mcl.onLoadProgress = function(L1:Number, L2:Number) {
if(L1/L2!=1) { var p:Number = Math.floor(L1/L2*100); _preloader.gotoAndStop(p);}
}


Это первый случай если использую if , то появляется вторая аномалия, прелоадер играет тока до 50% в любом случае даже просто при проигрывании ролика без загрузки.

.....
_mc._visible = false;
_mcl.onLoadInit = function() { _mc._visible = true; }
_mcl.onLoadProgress = function(L1:Number, L2:Number) {
var p:Number = Math.floor(L1/L2*100); _preloader.gotoAndStop(p);
}

Во втором случае доходит как надо до 100%, но первая АНОМАЛИЯ при simulate остается(((
Где я не прав???



Если поможет вот весь код :

class com.streamLoader extends MovieClip {

var _obj:Object;
var _clipLoader:MovieClipLoader;
public function streamLoader() {
}

private function _loadContent(_content, _location, _func, _loadProgress) {

if (_content != "undefined.swf") {
_obj = new Object();
_clipLoader = new MovieClipLoader();
_clipLoader.addListener(_obj);
_obj.onLoadProgress = _loadProgress;
_obj.onLoadInit = _func;
_clipLoader.loadClip(_content,_location);
}
}
};//end of class
....

var ss = new com.streamLoader();
ss._loadContent("About.swf",_parent._cont,INIT, _progress);
function INIT() {
play();
}
function _progress() {
var _l1 = _parent._cont.getBytesLoaded();
var _l2 = _parent._cont.getBytesTotal();
var perc = Math.floor(_l1/_l2*100);
_preloader.gotoAndStop(perc);
}

dimarik
01.11.2009, 23:24
А у меня Simulate Download иногда вообще вешает намерво IDE. Забейте на этот симулате. Юзайте NetLimiter какой-нибудь.

in4core
01.11.2009, 23:54
Вообщем проблему нашел : поясните мне вот что , почему НЕКТО клип имеющий свойство НЕВИДИМЫЙ до загрузки в него чего либо, СТАНОВИТСЯ сам по себе видимым при событии LoadInit ? Лишь только в том случае если в LoadStart иди LoadProgress не стоит ВЫКЛЮЧЕНИЕ видимости ЕЩЕ РАЗ.

Вопрос 2 : оказывается мувиклип лоадер так же грузит по кадрово swf ? Какая разница тогда от EnterFrame старинных лоадеров. только в событии onLoadComplete ? да зачем оно сдалось когда ДАЖЕ в enterFrame есть возможность включить init, start, и прогресс!!!

mooncar
02.11.2009, 00:04
1. Потому что так сделан класс MCL, по определению замещает почти все свойства мувика-контейнера.
2. Грузит-то покадрово, но не с частотой таймлайна основного ролика, а со скоростью, близкой к скорости передачи данных канала.
MCL - гибкий инструмент и функции, написанные с его участием, легко использовать повторно. А работа MCL осуществляется прямо в основном коде. MCL можно использовать где угодно в ролике.
В MCL все события встроены, onInit и тд., а так все нужно организовывать, сличать bytesLoaded и bytesTotal.
Нет необходимости после загрузки делать delete this.onEnterFrame.
И т.д..