Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Тормоза при использовании прелоадера (http://www.flasher.ru/forum/showthread.php?t=167273)

relaxoid 09.09.2011 08:55

Тормоза при использовании прелоадера
 
Здравствуйте.

При загрузке файла через прелоадер повляются довольно сильные тормоза (воспроизведение происходит плавно, но медленнее на 30-70% в зависимости от того где он запущен (в браузере или нет).
Подгружаемый файл представляет из себя видео разрешением 1366*768 30fps.
При запуске того же файла, напрямую, без использования прелоадера - тормоза отсутствуют полностью (даже в браузере).

подозреваю, что всё дело в прелоадере, но не знаю в какую сторону копать.

Код AS3:

import flash.net.URLRequest;
import flash.text.TextField;
import flash.events.Event;
var loader:Loader = new Loader();
var path:URLRequest = new URLRequest("test.swf");
loader.load(path);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderF);
 
function loaderF(e:Event):void
{
        var toLoad:Number = loader.contentLoaderInfo.bytesTotal;
        var loaded:Number = loader.contentLoaderInfo.bytesLoaded;
        var total:Number = loaded / toLoad;
        if (loaded == toLoad)
        {
                removeEventListener(ProgressEvent.PROGRESS, loaderF);
                preloader_mc.alpha = 0;
                back_ground_mc.alpha = 0;
                addChild(loader);
 
        }
        else
        {
                preloader_mc.preloaderFill_mc.scaleX = total;
                preloader_mc.percent_txt.text = Math.floor(total * 100) + "%";
                preloader_mc.ofBytes_txt.text = (loaded/1048576).toFixed(2) + " /";
                preloader_mc.totalBytes_txt.text = (toLoad/1048576).toFixed(2) + " Mb";
 
        }
}
 
stage.scaleMode = StageScaleMode.NO_SCALE;


Gogan 09.09.2011 12:01

во первых пугает вот эта вот строка :
Код AS3:

removeEventListener(ProgressEvent.PROGRESS, loaderF);

Вы не отписались от объекта к которому этот листнер был добавлен изначально, вы отписались как будто если бы он добавлен к мувиклипу в котором написан этот код. Нужно так:
Код AS3:

loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, loaderF);

Во вторых, я конечно не знаю как выглядит ваш прелодер но могу предположить, что возможно он не такой уж простой и в нем анимации много либо сложная какая то логика работы. Тогда не просто ему после отработки меняйте прозрачность в 0, а удаляйте его со сцены и все ссылки на него тоже:
Код AS3:

preloader_mc.parent.removeChild(preloader_mc);
preloader_mc = null;


relaxoid 09.09.2011 12:34

Спасибо за ответ.

Код поменял, но не помогает...

в прелоадере минимум графики:

[IMG]http://s016.***********/i335/1109/31/53e874ea7934.jpg[/IMG]

Существует ли разница в выделении ресурсов для основного файла и для загружаемого?

Каким образом выделяются ресурсы под Flash?
можно ли вообще во Flash контролировать выделяемые ресурсы?

ilzv 14.09.2011 09:33

А если уменьшить размер видео, тормоза исчезают?

relaxoid 20.09.2011 16:33

Изменил размер видео на 352*192 (7 Mb)
никаких изменений.
Видео загруженное через прелоадер - медленнее примерно в 2 раза.


решил вопрос переустановкой программы.


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

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