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

lorents 02.08.2009 17:42

Внешний прелоадер
 
Добрый день!
делаю проект, и надо сделать внешний флеш файл, который бы загружал другой флеш (он состоит из двух внешних картинок и одного музыкального файла), как это можно реализовать,
в сети нашел программу SWF, Lock & Load, которая, по идеи, должна делать то, что мне надо, но:(, видимо это из-за того что мой флеш состоит из двух внешних картинок и одного музыкального файла

BlooDHounD 03.08.2009 00:23

используйте класс Loader

Captain QUAZAR 27.12.2009 20:50

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

var cifra:Number;
 
var loader:Loader = new Loader();
var urlRequest:URLRequest = new URLRequest("http://maximumrisk.narod.ru/mos.swf");
loader.load(urlRequest);
loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressListener);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
 
function progressListener(e:ProgressEvent):void{
 
cifra = Math.round(e.bytesLoaded/e.bytesTotal*100);
 
moovik.progrecc.gotoAndStop(Math.round(e.bytesLoaded/e.bytesTotal*100));
}
 
function initListener(e:Event):void{
addChild(loader);
}
function completeListener(e:Event):void{
removeChild(moovik);
}
trace(cifra);

moovik - это мой мувик прелоадер. Но дело в том, что trace(cifra); выдает NaN:(. Следовательно, и мувик-прелоадер у меня не работает. Вообще, правильно ли я делаю внешний прелоадер? А если метод правильный, то в чем же проблема?

AL.exe 28.12.2009 00:29

Трейсите не там

Captain QUAZAR 28.12.2009 18:24

Поместил
Код AS3:

trace(cifra);

внутрь progressListener, трейсится, но мувик-прелоадер все все равно не работает. И загруженная флешка жутко тормозит и ругается так:
Цитата:

*** Security Sandbox Violation ***
SecurityDomain 'http://maximumrisk.narod.ru/mos.swf' tried to access incompatible context
SecurityError: Error #2070: Security sandbox violation: caller http://maximumrisk.narod.ru/mos.swf cannot access Stage owned by file:///C|/Documents%20and%20Settings/user/Мои%20документы/Flash/ПОДЕЛКИ/открытка/newyearContainer.swf.

D12 28.12.2009 18:43

Код AS3:

package
{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.net.URLRequest;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import flash.display.LineScaleMode;
    import flash.display.CapsStyle;
    import flash.display.JointStyle;
 
 
 
    [SWF(width='900', height='750', backgroundColor='#FFFFFF', frameRate='31')]
/*____________________________________________________*/
 
 
    public class FotoBigLoader extends Sprite
    {
        private var picLoader: Loader;
        private var myRequest: URLRequest;
        private var scaleOfLoad: Sprite;
        private var percentOfLoad: Number = 0
        public var completeLoad: Boolean;
 
 
 
        public function FotoBigLoader()
        {
            thisLoaderElement();
 
            drawPlayer();
        }
 
 
        private function thisLoaderElement(): void
        {
            picLoader = new Loader();
            myRequest = new URLRequest("image/big image/foto.jpg");
 
            picLoader.load(myRequest);
 
            picLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onLoadProgress);
            picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
        }
 
 
        private function drawPlayer(): void
        {
            scaleOfLoad = new Sprite;
 
            addChild(scaleOfLoad);
        }
 
 
        private function actionScaleOfLoad(target:Sprite): void
        {
            target.graphics.clear();
 
            target.graphics.lineStyle(6, 0x9B79AE, 1.0, false, LineScaleMode.NONE, CapsStyle.SQUARE);
            target.graphics.moveTo(0, 594);
            target.graphics.lineTo(percentOfLoad, 594);
            target.graphics.endFill();                       
        }
 
 
 
        function onLoadProgress(event:ProgressEvent): void
        {
            percentOfLoad = Math.floor((event.bytesLoaded / event.bytesTotal) * (100 * 9));
 
            actionScaleOfLoad(scaleOfLoad as Sprite);
        }
 
 
        function onLoadComplete(event:Event): void
        {
            completeLoad = true;
 
            removeChild(Sprite(scaleOfLoad));
 
            addChild(picLoader);
 
            picLoader.x = 75;
            picLoader.y = 300;
        }
  }
}

Извени твой код не смотрел, но вот набросал, так должно работать :)

Captain QUAZAR 31.12.2009 19:24

D12, спасибо тебе, но мне непонятные многие вещи в твоем коде. Например, вот это:
Код AS3:

  [SWF(width='900', height='750', backgroundColor='#FFFFFF', frameRate='31')]
/*____________________________________________________*/


D12 31.12.2009 19:42

^^)

Ой прошу прощения этой строчкай указываеться разрешение и фпс когда програмируете в флешьДевелопмер+компилирование FlexSDK :) а так не нужно :)

а так все работает и проверяно много раз :)

вот как это выглядит с этим кодом
http://goroskop.110mb.com/FotoGallery.swf

Captain QUAZAR 01.01.2010 17:55

D12, если у тебя есть время, не объяснишь мне некоторые непонятные вещи в твоем коде. Разобраться хочется.
Код AS3:

  target.graphics.lineTo(percentOfLoad, 594);

- почему мы рисуем линию до 594?
Код AS3:

percentOfLoad = Math.floor((event.bytesLoaded / event.bytesTotal) * (100 * 9));

- почему же здесь 100 умножается еще на девять? Я привык к такой записи
Код AS3:

Math.round(e.bytesLoaded/e.bytesTotal*100);

И вот эти 2 строчк еще не понимаю:
Код AS3:

actionScaleOfLoad(scaleOfLoad as Sprite);
removeChild(Sprite(scaleOfLoad));

Почему нельзя просто записать removeChild(scaleOfLoad);
Еще твоя флешка у меня почему-то не работает.:o

D12 02.01.2010 10:05

эм это как бы класс :) и он работает а путь к картинке ты верно прописал ?

1. 594 это координата по игрику
2. у множа. на 9 потаму что если просто на сто то прелоадер будет длинной в 100пикселей а мне нужно пустить его по всей ширене тоесть 900
2. первая строчка это наш спрайт линия отправляеться на функцию где она будет менять свою длинну по результатам данных загрузки, вторая строчка это из другой функции где она удаляет прелоадер после завершения загрузки картинки


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

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