Форум 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 19:51

на сцене экземпляр UILoader под названием loadWindow. Загрузка происходит, когда пользователь выбирает элемент из расположенного на сцене компонента List, имя экземпляра которого loadList
___
ничего не происходит и не выдает, после завершения загрузки выходит окно вывода пустое и все(

Alex Lexcuk 21.03.2013 20:05

Вложений: 1
Я всё ещё не могу понять что не работает, скачал архив 6.rar нажимаю на кнопки загрузка идёт видно сколько чего загрузилось, и прогресс бар работает, может должно быть как-то по другому.

Ksenya23 21.03.2013 20:11

при этом должно с достижением 20-процентного увеличения загрузки происходить увеличение размеров динамического текста на сцене на значение=5 и так до 100

maxkar 21.03.2013 20:17

Так не бывает при загрузке точного значения "20%". И "40%" не бывает. Данные грузятся порциями и вся порция сразу приходит. Поэтому вполне может быть 10%, а затем сразу 50%. Каждый диапазон нужно вручную проверять. Т.е. если percentLoaded > 20 & percentLoaded < 40, установить scale в ..., иначе если ... и так далее. И, видимо, без всяких +=.

Ksenya23 21.03.2013 20:37

Код AS3:

function textProgress(e:ProgressEvent):void{
if ( 20 < loadWindow.percentLoaded  < 40)
{info_txt.scaleX = 2; info_txt.scaleY = 2;}
if ( 40 < loadWindow.percentLoaded < 60)
{info_txt.scaleX = 3; info_txt.scaleY = 3;}
if (60 < loadWindow.percentLoaded < 80) 
{info_txt.scaleX = 4; info_txt.scaleY = 4;}
if (80 < loadWindow.percentLoaded < 100)
{info_txt.scaleX = 5; info_txt.scaleY = 5;}
}

к сожалению нет эффекта.. динамический текст статичен..

Alex Lexcuk 21.03.2013 21:08

так не заработает не так как вам надо
Код AS3:

if ( 20 < loadWindow.percentLoaded  < 40)

надо
Код AS3:

if (20<loadWindow.percentLoaded && loadWindow.percentLoaded<40)


Ksenya23 21.03.2013 21:34

все равно не получается..(

maxkar 21.03.2013 22:06

Продолжаем ловить блох. textProgress подписан только на Event.COMPLETE. Наверное, надо все-таки на ProgressEvent.PROGRESS. Или из progressHandler вызывать textProgress.

Ksenya23 21.03.2013 22:15

:D ни так ни сяк..не хочет работать, заколдованный текст

Alex Lexcuk 21.03.2013 22:25

Ksenya23, значит смотрите, я уже всё понял как надо делать у вас на 50 кадре вверху буква a, нажимаете на неё, затем нажимаете F9, теперь смотрите
Код 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);?!?!?!?
        //почему-же на Event.COMPLETE, а как-же 20% загрузки
        info_txt.scaleX = info_txt.scaleX = 1;//СБРОС
}
 
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);
 
        //info_txt.text = 'hello'
        //ВОТ ЗДЕСЬ ЖЕ МОЖНО
        var p:Number = e.bytesLoaded/e.bytesTotal;
        info_txt.scaleX = 1+p;
        info_txt.scaleY = 1+p;
}
 
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);
}

Но всё равно не будет работать, потому что вы нарисовали на сцене info_txt, но не внедрили ни одного символа шрифта, кликайте на этом текстовом поле и в свойстве Anti-alias поставте к примеру Use device fonts так точно работает.

вот так даже будет с шагом 20
Код AS3:

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);
 
        //info_txt.text = 'hello'
        //ВОТ ЗДЕСЬ ЖЕ МОЖНО
        var p:Number = e.bytesLoaded/e.bytesTotal;
        p = int(p*5);
        //p будет изменяться от 1 до 5
        //ведь 100/20 будет 5
        info_txt.scaleX = 1+p/5;
        info_txt.scaleY = 1+p/5;
}



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

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