Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите с UILooader_ом (http://www.flasher.ru/forum/showthread.php?t=137366)

St.Shaeen 11.03.2010 15:55

Помогите с UILooader_ом
 
Здравствуйте ребята! Я как начинающий в AS3 наткнулся на очередной камень.. создаю страничку сайта.Бэкграунд - рандомная картинка из библиотеки, загружаеться UILoader_ом. Написал скрипт для прелоадера, который показывает статус только для swf файла. Помогите пожалуйста связать размер картинки загружаемой UILoader_ом с размером swf.
Тоесть как совместить переменные , например toLoadUI и toLoad????
Так как я не знаю ещё большинство команд, для меня это трудно..

Код AS3:

stop();
 
//Загрузка случаяной картинки от 1 до 9
 
var случаянаяКартинка:Number = Math.ceil(Math.random()*18);
BackgroundIMG. source = "wallpapers/wall"+случаянаяКартинка+".jpg";
 
 
 
 
//UI bytes
 
BackgroundIMG.addEventListener(ProgressEvent.PROGRESS, UIPreloader);
function UIPreloader(event:ProgressEvent) {
 
        var toLoadUI:Number = event.bytesTotal;
        var loadedUI:Number = event.bytesLoaded;
        var totalUI:Number = loadedUI/toLoadUI;
 
}
 
 
//Content bytes
addEventListener(Event.ENTER_FRAME, LoaderF);
 
function LoaderF(e:Event):void{
        var toLoad:Number = loaderInfo.bytesTotal;
        var loaded:Number = loaderInfo.bytesLoaded;
        var total:Number = loaded/toLoad;
        if(loaded == toLoad){
                removeEventListener(Event.ENTER_FRAME, LoaderF);
                gotoAndStop(2);
        }else{
                preloader_mc.preloaderFill_mc.scaleX = total;
                preloader_mc.precent_txt.text = Math.floor(total*100)+"%";
                preloader_mc.ofBytes_txt.text = loaded + "bytes";
                preloader_mc.totalBytes_txt.text = toLoad + "bytes";
 
        }
}


F1esk 12.03.2010 07:35

а организовать очередь загрузки нельзя? загрузил swf, стартуй загрузку картинки. Можно создать относительный прогресс бар, указывающий общую загрузку + прогресс бар, отображающий загрузку текущего фрейма/свф/картинки.

Можно попробовать так: на Enter_Frame, а лучше на таймер, навешать событие, которое будет обрабатывать прелодаер( текстовое поле в вашем случае ).
Функция будет обрабатывать глобально объявленные непременные toLoadUI, loadedUI, toLoad, loaded. Которые в свою очередь, обновятся в ваших UIPreloader, LoaderF.

St.Shaeen 14.03.2010 15:04

Спасибо за совет, только вот сообразить не могу как вытянуть из функции эти значеня например totalUI.
а потом может создать отдельные переменные типа

Код AS3:

var toLoadAll:Number = toLoad + toLoadUI;

и так далее и на них уже вешать счётчик.
но опять таки не могу я достать эти значения из функции....

AlexDesinger 14.03.2010 15:27

У меня к автору вопрос - а почему вы выбрали какой-то экзотический способ грузить и отображать процесс загрузки?
Вопрос второй -что-то не очень понятно что счем связать нужно.
Вот вам для справки, может поможет -
Стандартный скрипт загрузки картинки из хелпа -
Код AS3:

package {
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLRequest;
 
    public class LoaderExample extends Sprite {
        private var url:String = "Image.gif";
 
        public function LoaderExample() {
            var loader:Loader = new Loader();
            configureListeners(loader.contentLoaderInfo);
            loader.addEventListener(MouseEvent.CLICK, clickHandler);
 
            var request:URLRequest = new URLRequest(url);
            loader.load(request);
 
            addChild(loader);
        }
 
        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
            dispatcher.addEventListener(Event.INIT, initHandler);
            dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
            dispatcher.addEventListener(Event.OPEN, openHandler);
            dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
            dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
        }
 
        private function completeHandler(event:Event):void {
            trace("completeHandler: " + event);
        }
 
        private function httpStatusHandler(event:HTTPStatusEvent):void {
            trace("httpStatusHandler: " + event);
        }
 
        private function initHandler(event:Event):void {
            trace("initHandler: " + event);
        }
 
        private function ioErrorHandler(event:IOErrorEvent):void {
            trace("ioErrorHandler: " + event);
        }
 
        private function openHandler(event:Event):void {
            trace("openHandler: " + event);
        }
 
        private function progressHandler(event:ProgressEvent):void {
            trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
        }
 
        private function unLoadHandler(event:Event):void {
            trace("unLoadHandler: " + event);
        }
 
        private function clickHandler(event:MouseEvent):void {
            trace("clickHandler: " + event);
            var loader:Loader = Loader(event.target);
            loader.unload();
        }
    }
}

как нетрудно догадаться - в этом примере в функции "progressHandler" можно отображать прогресс загрузки, функция init позволяет узнать размеры картинки и присвоить куда вам там надо.


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

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