Просмотр полной версии : Предзагрузка нескольких картинок с пом. MovieClipLoader ?
есть 1 объект MovieClipLoader
с помощью которого я загружаю картинки.
есть, к примеру, 2 мувиклипа(в реале это динамическое число) в которые я гружу картинки с помощью имеющегося MovieClipLoader`а(использую только один).
в MovieClipLoader я использую listener.onLoadProgress(и только его) для отображения количества загруженых байт для каждой картинки.
вопрос - как мне показать суммарное количество загруженных байт для двух картинок?
пример кода следующий:
var container:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
var image:MovieClip = container.createEmptyMovieClip("image", container.getNextHighestDepth());
var image2:MovieClip = container.createEmptyMovieClip("image2", container.getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number, num:Number):Void {
trace(target + ".onLoadProgress with " + bytesLoaded + " bytes of " + bytesTotal);
}
mcLoader.addListener(listener);
mcLoader.loadClip("http://www.site.kiev.ua/img1.jpg", image);
mcLoader.loadClip("http://www.site.kiev.ua/img2.jpg", image2);
но в примере показывается кол-во загруженных байт отдельно для каждой картинки, а необходимо показывать суммарное значение.
использовать на каждую загрузку по MovieClipLoader'у
а еще читать мануал, ага =)
вообще не так давно писал класс, не тестил толком, было сделанно с расчетом на Flash Player 6 так что там нету MovieClipLoader
но грузит много всякой дряни.
import mx.events.EventDispatcher;
import mx.utils.Delegate;
/**
* Enter description here
*
* @author Nirth
* @version 1.0
* @since
*/
//Event dispatches with interval while loading in progress
[Event("progress")]
//Event dispatches when data is loaded
[Event("complete")]
class com.onorange.lib.utils.MultiLoader {
//initialize event dispatcher
private static var __initED = EventDispatcher.initialize(MultiLoader.prototype);
public var dispatchEvent:Function;
public var addEventListener:Function;
public var removeEventListener:Function;
//
private var __objectsToLoad:Array;
private var __pathes:Array;
private var __intervalID:Number;
private var __interval:Number;
//
/**
* Constructor, creates instance of MultiLoader
* @usage import com.onorange.lib.utils.MultiLoader
* var loader:MultiLoader = new MultiLoader(50,[_root.mc1,_root.mc1.mc2,_root.mc3],["mc1.swf","mc2.swf","mc3.swf"]);
* function progress(evt:Object):Void {
trace(evt.loaded+"/"+evt.total);
}
loader.addEventListener("progress",onProgress);
* @param interval Number, interval in which <code>progress</code> event will be dispatched
* @param loadArray Array, of objects, in which you want to load media
* @param path Array, of pathes to media
* @return Nothing
*/
public function MultiLoader(interval:Number, loadArray:Array, path:Array) {
//assign variables values
__interval = interval;
__objectsToLoad = loadArray;
__pathes = path;
//start loading
__initLoading(loadArray, path);
//start interval
__intervalID = setInterval(Delegate.create(this, __update), __interval);
}
//private methods
private function __update():Void {
var t:Number = 0;
var l:Number = 0;
for (var i:Number = 0; i<__objectsToLoad.length; i++) {
t += __objectsToLoad[i].getBytesTotal();
l += __objectsToLoad[i].getBytesLoaded();
}
var p:Number = Math.round(l/t*100);
dispatchEvent({type:'progress',loaded:l,total:t,percent:p});
if (p == 100) {
dispatchEvent({type:'complete',loaded:l});
clearInterval(__intervalID);
}
}
private function __initLoading(objects:Array, path:Array):Void {
for (var i:Number = 0; i<objects.length; i++) {
var method:String = (objects[i] instanceof MovieClip) ? "loadMovie" : "loadSound";
objects[i][method](path[i]);
}
}
}
о найденых багах писать сюды
ну а используя только один MovieClipLoader, такое возможно? чета не могу допетрать.
а еще читать мануал, ага =)
ткни меня носом, будь добр.
Слушай...MovieClipLoader в любой отрезок времени, грузит максимум один мувик, это значит что он не может посчитать два мувика.
Nirth, класс AS2 для Flash Player 6? Абсурд =)
Слушай...MovieClipLoader в любой отрезок времени, грузит максимум один мувик, это значит что он не может посчитать два мувика.
Кхм, а потестить слабо? как показала практика не 1, а 2 %))), эт раз,
во вторых можно типа надругаться над MovieClipLoader все мувики которые грузишь складываеш в массив, а потом на
на сетИнтервал (а по мне лучше на онЕнтерФрейм) повесить обработчик который будет носиться по этому массиву и считать сумму всех загруженых и полных байт, а потом возвращать их отношение...%)
Nirth, класс AS2 для Flash Player 6? Абсурд =)
Ни когда не замечал, что выбирая для публикации версию 6, есть возможность указать AS2? А для 5-ки нет.
Nirth, класс AS2 для Flash Player 6? Абсурд =)
а в чем абсурд? %)
MovieClipLoader class
Availability
Flash Player 7.
class
Availability
Flash Player 6.
//****************************************************************************
//Copyright (C) 2003-2004 Macromedia, Inc. All Rights Reserved.
//The following is Sample Code and is subject to all restrictions on
//such code as contained in the End User License Agreement accompanying
//this product.
//****************************************************************************
class mx.utils.Delegate extends Object
{..................................
Ну, в самой шестёрке публиковать под AS2 вроде нельзя было, да и типизации там нет. А то, что в 7 и 8 можно публиковать под шестёрку с AS2 -- видел. А вот можно-ли это сделать в самой шестёрке -- не знаю.
Flash 6 не существует в природе=)
Flash player 6 c какой то там версии, понимает мувики компилированные Flash MX 2004\Flash 8 , с использованием AS2 классов(так как ас2 перерабатываеться в ас1 код, то не вижу проблем с этим)
так что, я смотрю никого не беспокоит эта тема, видимо никому не надо в проектах решать подобные задачи?
вобщем решение найдено, скоро его выложу.
Nirth, Flash 6 = Flash MX =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.