Форум 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=148428)

motoroller 31.12.2010 00:51

Странное поведение прелоадера
 
Есть небольшой класс для прелоадера:
Он работает, только одна проблемка, что он начинает срабатывать, но не сразу: показывать проценты и картинку загрузки начиная примерно с 40% ... а дальше все идет в штатном порядке... как все-таки его заставить раньше показывать процент загрузки хотя бы с 1% :)

Код AS3:

package com {
 
        import flash.display.MovieClip;
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.PixelSnapping;
        import flash.net.URLRequest;
        import flash.display.Loader;
        import flash.events.Event;
 
 
        public class Preloader extends MovieClip {
                public static const ENTRY_FRAME:Number=1;
                private var progressText:TextField;
                //private var pbp:ProgressBar;
 
                public function Preloader() {               
                        stop();
 
                        progressText = getChildByName("loading_txt") as TextField;
                        //pbp = getChildByName("loading_pb") as ProgressBar;
                        animation = getChildByName("animation") as MovieClip;
 
                        //pbp.mode = ProgressBarMode.MANUAL;
                        //pbp.setProgress(0, 100);
 
                        loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandlerP);
                        loaderInfo.addEventListener(Event.COMPLETE, completeHandlerP);
                }
 
                private function progressHandlerP(event:ProgressEvent):void {
                        var loaded:uint = event.bytesLoaded;
                        var total:uint = event.bytesTotal;
                        var percentLoaded:Number = Math.round((loaded/total) * 100);
                        animation.gotoAndStop(percentLoaded);
                        //trace(percentLoaded)
                        //pbp.setProgress(percentLoaded, 100);
                        progressText.text = "Загрузка " + percentLoaded + "%";
                }
 
                private function completeHandlerP(event:Event):void {
                        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
                }
 
                private function enterFrameHandler(event:Event):void {
                        if (currentFrame >= Preloader.ENTRY_FRAME) {
                                removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
                                gotoAndStop(2);
                        }
                }
        }
}


iflamberg 31.12.2010 01:28

О. Это ты отстал от жизни. Стартует прелоадер с 40%, потому что у тебя много тяжелых прилинкованых мувиков, у которых стоит галочка "'экспорт в первый кадр". Пока первый кадр не загружен - код не начнет исполнятся. Вот читай и смотри.

motoroller 31.12.2010 03:36

Скажите а только от этого зависит?
Посомтрел я видео, там надо всю структуру менять,
скажите есть ли другой выход какой?

Добавлено через 6 минут
Странная реакиця, убрал галочки "'экспорт в первый кадр", стало еще хуже практически на 100% выскакивает теперь, что же это такое получается...
Теперь опять лучше, короче все эти галочки дали мне 10%
а где же ещё 30% ...

TanaTiX 31.12.2010 04:41

Суть действий сводится к тому, чтоб убрать максимум контента (по крайней мере того, который занимает большой объем памяти) из кадра, содержащего прелоадер. Ко всему этому стоит добавить, что кадры при запуске флеша проигрываются по мере загрузки этих кадров, а не всей флешки целиком. Поэтому в настройках нужно ставить экспорт в другой (например, 2й) кадр.

iflamberg 31.12.2010 13:17

Если убрать "галочки", то экспортируемые элементы загружаются с тем кадром, где они впервые упоминаются в коде, или впервые оказываются на сцене.
В твоём случае возможно проще сделать внешний прелоадер, чтобы не менять структуру всей флешки.

mikhailk 31.12.2010 13:39

+1
если все уже собрано и работает - проще прикрутить внешний прелоадер.

motoroller 31.12.2010 18:20

Вообщем я опнял что надо делать, скажите пожалуйста у меня несколько файлов для загрузки в разных местах, конечно хочется сделать универсальный прелоадер,с передачей параметров и тд.
Скажите реально сделать ресайз флешки, допустим у меня прелоадер 100X100, а после загрузки у меня флешка меняет размеры допустим 200X200?
А то не хочется для каждой флешки еще отдельно и делать отдельный прелоадер

Gaen 31.12.2010 19:02

Вконтакт же сделал :) Значит и вы сможете.

motoroller 31.12.2010 19:33

Еще вопрос все-таки не стал я заморачивать с внешним прелоадером, нашел примерчик

Но почему-то стопорится тут
Код AS3:

updateAfterEvent();

Ошибка,
Scene 1, Layer 'action', Frame 1, Line 56 1180: Call to a possibly undefined method updateAfterEvent.

Скажите как этот метод можно поключить?

iflamberg 31.12.2010 19:53

Тот пример на as2 вообще.

Ты хелп-то открой и посмотри, что за метод updateAfterEvent и зачем он нужен. Этот метод есть у MouseEvent и TimerEvent, чтобы обновить изображения на экране сразу после возникновения события.

motoroller 31.12.2010 21:48

Пробую сделать внений прелоадер, все работает,
но возникает проблема с alchemy
не хочет работать

Код AS3:

Not using domain memory
local system
local system w/o gsprite
Static init...
Undefined sym: _abort
Starting work...
Lib didn't register
RangeError: Error #1506: Указан недопустимый диапазон.
        at cmodule.aircall::FSM__start/work()
        at cmodule.aircall::CRunner/work()
        at cmodule.aircall::CLibInit/init()
        at uploaderResize_fla::MainTimeline/frame1()[uploaderResize_fla.MainTimeline::frame1:43]
Load Complete

Если запускаю сразу основую флешку то таких проблем нет

mikhailk 31.12.2010 21:59

Как делаете внешний прелоадер?
Код покажите.

motoroller 31.12.2010 22:35

Код AS3:

// Set up the loader object
var request:URLRequest = new URLRequest("Content.swf"); // File path is relative to this preloader
var loader:Loader = new Loader();
 
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
 
// Update the percentage display
function loadProgress(event:ProgressEvent):void
{
    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;
    percentLoaded = Math.round(percentLoaded * 100);
 
        this.percentLoaded.text = String(uint(percentLoaded)) + "%";
}
 
// Load complete, hide the animating graphic and text
function loadComplete(event:Event):void
{
    trace("Load Complete");
        this.rotatingOrb.visible = false;
        this.percentLoaded.visible = false;
}
 
loader.load(request);
this.addChild(loader);

Вообще-то наверно лучше внутренний, потому с внешним много гимора, плюс у меня параментры разные, да и размер флешки потом менять ...
А с внутренним тоже не все лады,
все по максиммому убираю из первого кадра только прелоадер там, и все ранво с 60%...
А еще хотелось бы узнать влияб ли impotк и когда его вставлять

TanaTiX 01.01.2011 12:47

Цитата:

А с внутренним тоже не все лады,
Вообще-то лады в обоих случаях, нужно просто уметь использовать. Ищите ошибки в своих реализациях.
Цитата:

А еще хотелось бы узнать влияб ли impotк и когда его вставлять
Ставить только в тех классах, где используется. Import импортирует целиком указанный класс в том случае, если этот класс используется.

iflamberg 01.01.2011 14:18

import никак не влияет на размеры ролика. Если класс не упоминается в коде, то несмотря на import, он не будет добавлен в swf. Импорт просто говорит компилятору где искать упомянутые классы.

TanaTiX 01.01.2011 14:48

iflamberg
Цитата:

в том случае, если этот класс используется.
В общем сказали одно и тоже


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

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