Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Событие постепенной загрузки swf-файла (http://www.flasher.ru/forum/showthread.php?t=196251)

Ksenya23 21.03.2013 14:24

Событие постепенной загрузки swf-файла
 
Вложений: 1
Добрый день, имеется небольшая задача - "Создайте динамическое текстовое поле и изменяйте значение его свойства text при увеличении загруженной части файла. Например, можно использовать условный оператор и изменять текст каждый раз, когда значение переменной percent увеличится на 20".
При моих попытках это сделать, никаких изменений не наблюдаю..в функции - textProgress, перебрала все свойства, проверила цикл..ничего, в чем я ошибаюсь? просто, но злит, почему не работает и ошибок никаких не выдает( представляю вашему вниманию исходник..

Alex Lexcuk 21.03.2013 14:41

Ksenya23, попробуйте сделать по уроку http://demiart.ru/forum/index.php?showtopic=95664#
Там как раз есть
Цитата:

Создайте динамическое текстовое поле и изменяйте значение его свойства text при увеличении загруженной части файла. Например, можно использовать условный оператор и изменять текст каждый раз, когда значение переменной percent увеличится на 20
Код AS3:

                private function progressHandler(event:ProgressEvent):void {
                        var loaded:uint = event.bytesLoaded;//сколько загрузилось
                        var total:uint = event.bytesTotal;//сколько весит всего
                        var procent:uint = int(loaded/total*100);//процент загрузки
                        preRectMc.scaleX = loaded/total;//ширина квадратика процентов загрузки
                        preTxt.text = int(loaded/total*100)+'%';//в текстовом поле процент загрузки
                }

И объясните преподавателю, что
Цитата:

Например, можно использовать условный оператор и изменять текст каждый раз, когда значение переменной percent увеличится на 20
Это утверждение не охватывает возможных ситуаций, к примеру если
Код AS3:

var procent:uint = int(loaded/total*100);

выдаст что то типа 10,15,16,20 (тут сработает), а теперь скорость интернета выросла и затем 41, 82 и всё загрузилось затем получаем completeHandler.

Ksenya23 21.03.2013 15:00

Alex Lexcuk, спасибо, но большинство из этих параметров есть в моем файле..и я попробовала использовать один, как я поняла подходящий..поэтому изучение данного урока снова придет к моему текстовому полю, мне кажется в моем примере не так много надо будет сделать добавлений или изменений, возможно. Я не понимаю в чем ошибка, что понимаю не так..судя по вашему примеру урока, использую те же параметры - scaleX, scaleY.. и связываю вроде бы правильно, но попала в тупик.

Alex Lexcuk 21.03.2013 17:56

Ksenya23, так вам надо не внутренний прелоадер сделать, а просто подгружать swf файлы из этой папки.
Если так то всё у вас работает, просто надо сделать Simulate Download для эмуляции медленного соединения.
Нажимаете, ctrl+enter.
Теперь заходите в плеере View->Download Settings->Ставите тут 56k
Теперь надо опять нажать ctrl+enter. И ваша флешка будет медленно грузится и медленно загружать другие флешки в себя и будут видны и прогрессбар и текстовое поле с отображением процента загрузки.

Ksenya23 21.03.2013 18:47

Про имитацию загрузки, знаю, так и делаю..просто текстовое динамическое поле не увеличивается(

Deimos747 21.03.2013 18:58

Попробуйте
Код AS3:

loadWindow.addEventListener(ProgressEvent.PROGRESS, progressHandler);

заменить на
Код AS3:

addEvenListener(Event.ENTER_FRAME, progressHandler);


caseyryan 21.03.2013 19:08

Цитата:

Сообщение от Deimos747 (Сообщение 1126234)
Попробуйте
Код AS3:

loadWindow.addEventListener(ProgressEvent.PROGRESS, progressHandler);

заменить на
Код AS3:

addEvenListener(Event.ENTER_FRAME, progressHandler);


Зачем советовать человеку костыль?

Ksenya23, выкладывайте лучше код, который пишите, а не прикрепленные файлы, которые еще нужно в чем-то открыть.
У меня этот файл не открывается.

Ksenya23 21.03.2013 19:09

Deimos747, нет, не выходит при таком способе..при этом исчезает символ загрузки и при щелчке на ссылку загрузки ролика - открывается окно вывода каждый раз(

Добавлено через 1 минуту
Хорошо, caseyryan..исправляюсь:
Код AS3:

import flash.text.TextField;
var percent:int = loadWindow.percentLoaded;
var info_txt:TextField = new TextField();
info_txt.text = "Welcome to the home frame";
 
restart_btn.addEventListener(MouseEvent.CLICK, goStart);
 
function goStart(e:MouseEvent):void {
        gotoAndPlay("loop");
        count = 1;
}
 
loadList.addEventListener(Event.CHANGE, loadFile);
 
function loadFile(e:Event):void {
        loadWindow.load(new URLRequest(e.target.selectedItem.data));
        loadWindow.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        loadWindow.addEventListener(Event.COMPLETE, completeHandler);
        loadWindow.addEventListener(Event.COMPLETE, textProgress);
}
 
bar.visible = false;
loadingAnimation.visible = false;
loadingAnimation.stop();
loadingAnimation.alpha = .8;
 
//вот здесь мои добавления кода:
 
function textProgress(e:ProgressEvent):void{
if (loadWindow.percentLoaded in [20, 40, 60, 80, 100]){
info_txt.scaleX += 5; info_txt.scaleY += 5;
}}
 
 
function progressHandler(e:ProgressEvent):void {
        bar.visible = true;
        prog_txt.visible = true;
        loadingAnimation.visible = true;
        var percent:int = loadWindow.percentLoaded;
        loadingAnimation.gotoAndStop(Math.ceil(percent/3));
        prog_txt.text = String(loadWindow.bytesLoaded) + " of " + String(loadWindow.bytesTotal) + " bytes" + "\n" + " (" + percent +"% loaded)";
        bar.setProgress(e.bytesLoaded, e.bytesTotal);
}
 
function completeHandler(event:Event):void {
        bar.visible = false;
        prog_txt.visible = false;
        loadingAnimation.visible = false;
        loadWindow.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
        loadWindow.removeEventListener(Event.COMPLETE, completeHandler);
}


Deimos747 21.03.2013 19:18

Цитата:

Сообщение от caseyryan (Сообщение 1126235)
Зачем советовать человеку костыль?

Я хотел посмотреть будет ли работать с костылём, поскольку в коде беглым взглядом мало что понял

AlexLucas 21.03.2013 19:39

Закиньте в textProgress
Код AS3:

trace('loaded : ' + loadWindow.percentLoaded);

И посмотрите что вам выдаст.
Кто такой loadWindow?


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

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