Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   загрузка картинок с отображением хода загрузки (http://www.flasher.ru/forum/showthread.php?t=78851)

AlexSol 26.04.2006 14:11

загрузка картинок с отображением хода загрузки
 
нужно в клип загрузить картинку, с показом хода загрузки. во флешовых примерах выделил следующий код:
Код:

stop();
System.security.allowDomain("http://www.keyline.ru");
import mx.transitions.Tween;
var leftX:Number = 378;
var topY:Number = 125;
var image1Clip:MovieClip = makeNewImageClip(leftX, topY);
// задаем переменные хранения изменений изображения
var widthMin:Number;
var widthMax:Number;
var heightMin:Number;
var heightMax:Number;
var loaderListener:Object = new Object();
loaderListener.onLoadProgress = function(holderClip:MovieClip, loadedBytes:Number, totalBytes:Number) {
        var progressClip:MovieClip = holderClip._parent.progressClip;
        var percent:Number = Math.round((loadedBytes/totalBytes)*100);
        progressClip.indicatorClip._xscale = percent;
        progressClip.progressText.text = " "+percent+"% загружено";
};
loaderListener.onLoadInit = function(holderClip:MovieClip) {
        holderClip._parent.progressClip._visible = false;
        holderClip._x = 0;
        holderClip._y = 0;
        holderClip._parent._x = 0;
        holderClip._parent._y = 0;
        duplicateMovieClip(holderClip._parent, "dubl", 10);
        trace(holderClip._parent);
        trace(dubl);

};
var baseUrl:String = "http://www.keyline.ru/";
// определяем MovieClipLoader object для загрузки картинок.
var imageLoader:MovieClipLoader = new MovieClipLoader();
imageLoader.addListener(loaderListener);
imageLoader.loadClip(baseUrl+"intro.jpg?id="+Math.random(), image1Clip.holderClip);
function makeNewImageClip(x:Number, y:Number) {
        var depth:Number = this.getNextHighestDepth();
        var imageClip:MovieClip = this.createEmptyMovieClip("imageClip"+depth, depth);
        imageClip.createEmptyMovieClip("holderClip", 1);
        var progressClip:MovieClip = imageClip.createEmptyMovieClip("progressClip", 2);
        progressClip.createEmptyMovieClip("indicatorClip", 1);
        progressClip.createTextField("progressText", 2, 0, -25, 100, 25);
        progressClip.progressText.border = true;
        progressClip.progressText.text = " идет загрузка";
        progressClip.indicatorClip.lineStyle(0, 0, 0);
        progressClip.indicatorClip.beginFill(0xFF0000, 100);
        progressClip.indicatorClip.lineTo(100, 0);
        progressClip.indicatorClip.lineTo(100, 5);
        progressClip.indicatorClip.lineTo(0, 5);
        progressClip.indicatorClip.lineTo(0, 0);
        progressClip.indicatorClip.endFill();
        progressClip._x = -50;
        imageClip._x = x;
        imageClip._y = y;
        return imageClip;
}

проблема следующая: клип ресуется превосходно, но гогда он сделан, мне нужен еще один такой же клип. возникает вопрос:как сделать дупликат клипа???? простое duplicateMovieClip клип дублирует, НО! картинка в новом не отображается...

Bорон 26.04.2006 14:17

Насколько я помню из похожего обсуждения - загруженый контент не дублируется.
Нужно грузить еще раз.

AlexSol 26.04.2006 14:25

ага... тогда опишу общую задачу: в клип нужно загрузить несколько картинок - как сделать общий индикатор загрузки (клип своей графики не имеет и по-этому нужен прелоадер только на загружаемую графику)?

Bорон 26.04.2006 15:59

Гы.
percent=((IMG1.getBytesLoaded()+IMG2.getBytesLoaded())/(IMG1.getBytesTotal()+IMG2.getBytesTotal()))*100;

Samodelkin 26.04.2006 17:26

Юзая BitMapData
Код:

loaderListener.onLoadInit = function(holderClip:MovieClip) {
        holderClip._parent.progressClip._visible = false;
        holderClip._x = 0;
        holderClip._y = 0;
        holderClip._parent._x = 0;
        holderClip._parent._y = 0;
        holderClip._parent._alpha = 10;
        //duplicateMovieClip(holderClip._parent, "dubl", 10);
        var MyBitmapData:BitmapData = new BitmapData(holderClip._parent._width, holderClip._parent._height);
        MyBitmapData.draw(holderClip._parent);
        _root.createEmptyMovieClip("dubl", 10);
        _root.dubl._x = 300;
        _root.dubl.attachBitmap(MyBitmapData,100);
        trace(holderClip._parent);
        trace(dubl);
};


AlexSol 26.04.2006 17:43

спасибо! до этого класса еще не добрался. отмечу только о необходимости указать в самом начале
Код:

import flash.display.BitmapData;


Часовой пояс GMT +4, время: 00:48.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.