Просмотр полной версии : MovieClipLoader - загрузка swf вместо фото
Добрый вечер. Глюк, который сейчас опишу, встречаю 3 раз, но раньше он как-то пропадал сам собой, сейчас же такой халявы не получается. Итак.
function fotoLoad(num:Number){
var loader:MovieClipLoader = new MovieClipLoader();
thisFoto = fotos_mc.createEmptyMovieClip("foto" + num, num);
loader.loadClip(thisFotoNode_array[num], thisFoto);
thisFoto.onEnterFrame = function(){
var loadObj:Object = loader.getProgress(thisFoto);
time = Math.floor(loadObj.bytesLoaded/loadObj.bytesTotal*100);
trace(time);
if(time >= 100){
delete thisFoto.onEnterFrame;
trace(loadObj.bytesTotal);
}
}
}
Это функция загрузки фоток. Однако они не грузятся, хотя путь их читает верно. При полной же загрузки фотки, чтобы удостовериться она ли грузится, вывожу ее размер, однако показывает не размер фото, а вес моего swf!! Это ни в какие ворота... В чём дело, подскажите!
Не правильно пользуетесь MovieClipLoaderом.
Для отслеживания загрузки сделайте его слушателем объекта.
Все это есть в хелпе.
scarbo, кого слушателем? Кого будет слушать MovieClipLoader и зачем?
Ошибка, скорее всего, в том, что в getProgress надо передавать this, а не thisFoto, равно как и delete this.onEnterFrame.
О! Код в стиле стимпанк! )))
Не, так не надо, для того MovieClipLoader и был создан на замену loadMovie, чтобы так никогда не извращаться. У класса MovieClipLoader есть отличные способности - onLoadStart чтобы активировать всякие прелоадеры для показа загрузки, onLoadProgress для отслеживания прогресса загрузки, onLoadComplete и onLoadInit для отслеживания ее окончания. Столько вкусностей, а Вы не пользуетесь))
to _etc:var loader:MovieClipLoader = new MovieClipLoader();
var myObj:Object = new Object();
loader.addListener(myObj)
myObj.onLoadStart = function(target){
...
}
loader слушает myObj.
scarbo, ну, во первых, всё наоборот, а во вторых, тру флешеры не создают трешевый-объект типа «слушатель».
__etc обьясните пожалуйста, почему не создаётся слушатель в этом случае? Я как раз читал что слушатель желателен в этом случае и аргументируется это тем что некоторая часть возможностей класса MovieClipLoader не доступна на прямую. Для доступа к которым создаётся слушатель.
Обьясните что не так?
Art_133, потому что он не нужен. Этот самый «слушатель» есть некий непонятный обыкновенный объект, с объявленными свойствами-функциями, которые запускаются бог знает в какой области видимости, висят в памяти и являются ничем иным, как паразитами.
А всё потому, что начинающие разработчики пишут методы типа fotoLoad, с абстрактным индексом фотографии, который никакой смысловой нагрузки не несет, кроме индекса создаваемого клипа, вместо того, чтобы написать класс-наследник MovieClip, который сам загружает фото по url (больше ему ничего знать не нужно), подписывается на события (а не подписывает какой-то левый «слушатель»), крутит прелоадер и рапортует об окончании загрузки, если это необходимо.
Ух, как вас много...
Про слушатель объекта вообще не думал.
Не помню как я избавлялся в прошлые разы от этого глюка, но сейчас так
...
loader.loadClip(thisFotoNode_array[num].toString(), thisFoto);
...
И заработало... А в массиве хранилось значение считанное с xml. Наверное мой тупизм...
Wolsh, что значит код в стиле стимпанк?
Нда, добавилась новая непонятная проблема. Получается, что фото грузится неведомо куда. По-идее в thisFoto, но и ширина и высота равны нулю, и перемещать не получается... В чем теперь то дело может быть?
Wolsh, что значит код в стиле стимпанк?Это когда код представляет из себя красивую смесь из новых удобных методов и классов, и старых "хакерских" подходов к решению, как Ваш onEnterFrame в этом коде. Если просто открыть хелп и почитать все про MovieClipLoader, внимательно посмотреть пример, все будет понято и сделано.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.