Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Прелоадер для 3D виртуального тура (http://www.flasher.ru/forum/showthread.php?t=204666)

metzies 08.11.2013 12:38

Прелоадер для 3D виртуального тура
 
Здравствуйте,


Я создал виртуальный 3D тур и разместил на своем хостинге (Формат swf). Пытаюсь сделать прелоадер, чтобы он отображал процентное соотношение закачки (либо в килобайтах), но я никак не могу понять, как получить событие по окончанию загрузки флеша?

Возможно кто-нибудь подскажет как правильно сделать прелоадер для флеша?

Сам тур расположен по ссылке - (Ссылка слева на картинке) http://www.online-sauna.ru/sauna.php?firm=547


Благодарю.

Zebestov 08.11.2013 12:48

Поиск по словам внутренний прелоадер должен помочь.

metzies 14.02.2014 13:28

Спасибо.

Я решил воспользоваться внешним прелоадером, что-то на подобии вот этого:
Код AS1/AS2:

public class Test extends Sprite 
        {
                private var _preloader        :RoundedPreloader;
 
                public function Test()
                {
                        super();
 
                        _preloader = new RoundedPreloader();
                        _preloader.x = stage.stageWidth / 2;
                        _preloader.y = stage.stageHeight / 2;
                        _preloader.play();
                        addChild(_preloader);

Прошу подсказки как соединить все это дело с основным swf.

Код AS1/AS2:

           import flash.display.Sprite;  
        import flash.display.Shape; 
        import flash.events.MouseEvent;
        import flash.events.TimerEvent;
        import flash.utils.Timer;
        import flash.display.Graphics;
 
 
        public class RoundedPreloader extends Sprite 
        { 
                private var _color          :uint; 
                private var _minRadius            :int; 
                private var _segmentsCount  :int; 
                private var _segmentLength        :int;
                private var _rotationSpeed  :int; 
                private var _timer                        :Timer;
                private var _playing                :Boolean = false;
 
// ------------- public
                public function RoundedPreloader($pColor:uint = 0x666666, $minRadius:int = 10, $segmentLength:int = 10, $segmentsCount:int = 12, $rotationSpeed:int = 50) 
                { 
                        super(); 
                        _color = $pColor; 
                        _minRadius = $minRadius; 
                        _segmentLength = $segmentLength;
                        _segmentsCount = $segmentsCount; 
                        _timer = new Timer($rotationSpeed);
                        _timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
 
                        buildDisplay(); 
                } 
 
                public function play():void
                {
                        if (_playing || !_timer) return;
                        _timer.start();
                        _playing = true;
                }
 
                public function stop():void
                {
                        if (!_playing || !_timer) return;
                        _timer.stop();
                        _playing = false;
                }
 
                public function destroy():void
                {
                        _timer.stop();
                        _timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);
                        while (numChildren) { removeChildAt(0); }                                                                                       
                        if(stage && parent)        parent.removeChild(this);
                }
 
                public function get color():uint { return _color; }
                public function set color($colorValue:uint):void
                {
                        _color = $colorValue;                                                                                                                               
                        while (numChildren) { removeChildAt(0); }                                                                                       
                        buildDisplay();                                                                                                                                                                       
                }
 
                public function get segmentLength():int { return _segmentLength; }
                public function set segmentLength($lengthValue:int):void
                {
                        _segmentLength = $lengthValue;                                                                                                               
                        while (numChildren) { removeChildAt(0); }                                                                                       
                        buildDisplay();                                                                                                                                               
                }
 
                public function get segmentsCount():int { return _segmentsCount; }
                public function set segmentsCount($countValue:int):void
                {
                        _segmentsCount = $countValue;                                                                                                       
                        if (_segmentsCount < 5) _segmentsCount = 5;                                                                                       
                        while (numChildren) { removeChildAt(0); }                                                                                       
                        buildDisplay();                                                                                                                                                               
                }
 
                public function get minRadius():int { return _minRadius; }
                public function set minRadius($radiusValue:int):void
                {
                        _minRadius = $radiusValue;                                                                                                                       
                        while (numChildren) { removeChildAt(0); }                                                                                       
                        buildDisplay();                                                                                                                                                               
                }
 
                public function get speed():int { return _timer.delay; }                                                               
                public function set speed($speedValue:int):void                                                                               
                {
                        _timer.stop();                                                                                                                                               
                        _timer.removeEventListener(TimerEvent.TIMER, onTimerHandler);                                               
                        _timer = new Timer($speedValue);
                        _timer.addEventListener(TimerEvent.TIMER, onTimerHandler);
                        if (_playing) _timer.start();
                }
 
// ------------- private
                private function buildDisplay():void 
                { 
                        for(var i:int = 0; i < _segmentsCount; i++)
                        {
                                var line:Shape = drawRoundedRect(_segmentLength, _segmentLength * 0.4, _segmentLength * 0.2, _color);
                                        line.x = _minRadius;
                                        line.y = - line.height / 2;
                                var tempMc:Sprite = new Sprite();
                                        tempMc.addChild(line);
                                        tempMc.alpha = 0.3 + 0.7 * i / _segmentsCount;
                                        tempMc.rotation = 360 * i / _segmentsCount;
                                addChild(tempMc);
                        }
      } 
 
      private function onTimerHandler(e:TimerEvent):void 
      { 
          rotation += 360 / _segmentsCount; 
      } 
 
                private function drawRoundedRect($w:Number, $h:Number, $bevel:Number = 0, $color:uint = 0x000000, $alpha:Number = 1):Shape
                {
                        var mc = new Shape();
                                mc.graphics.beginFill($color, $alpha);
                                mc.graphics.moveTo($w - $bevel, $h);           
                                mc.graphics.curveTo($w, $h, $w, $h - $bevel);     
                                mc.graphics.lineTo($w, $bevel);                         
                                mc.graphics.curveTo($w, 0, $w - $bevel, 0); 
                                mc.graphics.lineTo($bevel, 0);                         
                                mc.graphics.curveTo(0, 0, 0, $bevel);                 
                                mc.graphics.lineTo(0, $h - $bevel);                     
                                mc.graphics.curveTo(0, $h, $bevel, $h);         
                                mc.graphics.lineTo($w - $bevel, $h);                     
                                mc.graphics.endFill();
                        return mc;
                }
 
  } 
}



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

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