Skip to main content
Inspiring
December 29, 2010
Answered

Slideshow skips only when online

  • December 29, 2010
  • 1 reply
  • 399 views

Hi All,

I'd really appreciate some help on this.. I have a slide show that works totally fine when it's on my machine, however, once it's published to web, instead of having a smooth transition between External SWFs, it skips and shows white background with loader for a sec.. Not only when it's loading first time, but all the time.. Any help on this would be SUPER APPRECIATED. Here's the code:

Thank you very much ahead of time!!

package
{
   
    // IMPORT FLASH   
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.text.*;
   
    import flash.geom.ColorTransform;
   
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;
    import flash.media.SoundTransform;
    import flash.media.SoundMixer;
           
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    import fl.transitions.TweenEvent;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
   
    import caurina.transitions.Tweener;
   
    //----------------------------------------------------------------------------------------------------
      //                                                                                            MAIN CLASS
      //----------------------------------------------------------------------------------------------------
   
    public class Slideshow extends MovieClip
    {
       
    //-----------------------------------------------------------------   YOU CAN CUSTOMIZE THIS VAR VALUES!!       
       
        // original color for text is: 0xA28565, for bkg is: 0xECD7B2, for border is: 0xC8B18F
       
        private var numberOfSlides:Number = 3;                                        // number of slides there are going to be
        private var spacingBtn:Number = 25;                                            // the distance between buttons       
       
        private var bkgColorStart:uint = 0xf2d0b0;                                    // the button bkg color when it first loads
        private var borderColorStart:uint = 0xC8B18F;                                // the button border color when it first loads   
        private var txtColorStart:uint = 0xA28565;                                    // the button text color when it first loads
       
        private var bkgColorOver:uint = 0xffeddb;                                    // the button bkg color on mouse over event
        private var borderColorOver:uint = 0xC8B18F;                                // the button border color on mouse over event       
        private var txtColorOver:uint = 0xA28565;                                    // the button text color on mouse over event
       
        private var bkgColorOut:uint = 0xECD7B2;                                    // the button bkg color on mouse out event
        private var borderColorOut:uint = 0xC8B18F;                                    // the button border color on mouse out event       
        private var txtColorOut:uint = 0xA28565;                                    // the button text color on mouse out event   
       
        private var bkgColorActive:uint = 0x1fbbfc;                                    // the button bkg color when is active
        private var borderColorActive:uint = 0xffffff;                                // the button border color when is active
        private var txtColorActive:uint = 0xffffff;                                    // the button text color when is active   
       
        private var my_speed:Number = 8;                                            // the speed loading to next swf
        private var my_swfs:Array = new Array("swfs/one_btn.swf","swfs/two_btn.swf","swfs/three_btn.swf");
       
    //-------------------------------------------------------------------------------------   PRIVATE VAR
   
        private var slideBtn:_SlideBtn;                                                // make new instance       
        private var myBkgColorTransform = new ColorTransform();                       
        private var myBorderColorTransform = new ColorTransform();   
        private var currentlyActive:*;
        private var activeSet:Boolean = false;
        private var slideButtons:Array;
       
        private var urlSong:String = "ocean2.mp3";
        private var urlSong2:String = "squeeak.mp3";
        private var song:SoundChannel;
        private var song2:SoundChannel;
        private var myTransform = new SoundTransform();
        private var myTransform2 = new SoundTransform();
       
        private var my_total:Number = numberOfSlides;
        private var my_preloader:TextField;
        private var my_timer:Timer = new Timer(my_speed * 1000);
        private var my_success_counter:Number = 0;
        private var my_playback_counter:Number = 0;
        private var my_loader:Loader;
       
    //----------------------------------------------------------------------------------------------------
    //                                                                                                  MAIN
     //----------------------------------------------------------------------------------------------------
       
        public function Slideshow():void
        {
            init();
        }
       
        private function init():void
        {
            slideButtons = new Array;
           
            for (var i:Number = 0; i < numberOfSlides; i++)
            {
                slideBtn = new _SlideBtn();
                controlsContainer.addChild(slideBtn);
                slideBtn.x = 59 + (i * spacingBtn);
                slideBtn.y = 8;
                slideBtn.txt.text = String(i + 1);
                slideBtn.buttonMode = true;
                slideBtn.mouseChildren = false;
                slideBtn.useHandCursor = true;
                slideBtn.addEventListener(MouseEvent.MOUSE_OVER, buttonEventsHandler);
                slideBtn.addEventListener(MouseEvent.MOUSE_OUT, buttonEventsHandler);
                slideBtn.addEventListener(MouseEvent.CLICK, buttonEventsHandler);
                slideBtn.name = "slideBtn" + (i + 1);
                myBkgColorTransform.color = bkgColorStart;
                slideBtn.bkg.transform.colorTransform = myBkgColorTransform;               
                myBorderColorTransform.color = borderColorStart;
                slideBtn.border.transform.colorTransform = myBorderColorTransform;           
                slideBtn.txt.textColor = txtColorStart;   
                slideButtons.push(slideBtn);
                slideBtn.urlPath = my_swfs;               
                slideBtn.itsID = i;
            }
           
            setFirst();
            startSound1();
            startSound2();
            controlsContainer.play_btn.addEventListener(MouseEvent.CLICK, playSound);
            controlsContainer.stop_btn.addEventListener(MouseEvent.CLICK, stopSound);
            controlsContainer.go_btn.addEventListener(MouseEvent.CLICK, playTimer);
            controlsContainer.pause_btn.addEventListener(MouseEvent.CLICK, stopTimer);   
            controlsContainer.play_btn.visible = false;   
            controlsContainer.go_btn.visible = false;
        }
       
        private function changeColor(e:*, bkgColor:uint, borderColor:uint, txtColor:uint):void
        {
            myBkgColorTransform.color = bkgColor;
            e.bkg.transform.colorTransform = myBkgColorTransform;
           
            myBorderColorTransform.color = borderColor;
            e.border.transform.colorTransform = myBorderColorTransform;
       
            e.txt.textColor = txtColor;
        }
       
        private function setFirst():void
        {
            slideButtons[0].dispatchEvent(new MouseEvent(MouseEvent.CLICK));
            my_timer.addEventListener(TimerEvent.TIMER, timerListener);           
        }
       
    //----------------------------------------------------------------------------------------------------
    //                                                                                        BUTTON METHODS
    //----------------------------------------------------------------------------------------------------
       
        private function buttonEventsHandler(e:MouseEvent):void
        {
            switch (e.type)
            {
                case MouseEvent.MOUSE_OVER :
               
                    changeColor(e.target, bkgColorOver, borderColorOver, txtColorOver);
               
                break;
               
                case MouseEvent.MOUSE_OUT :
               
                    changeColor(e.target, bkgColorOut, borderColorOut, txtColorOut);
               
                break;
               
                case MouseEvent.CLICK :
               
                    my_playback_counter = e.target.itsID;               
                    loadImages(e.target.urlPath);
                    stayActive(e);
                    my_timer.reset();
                    my_timer.start();
               
                break;
               
                default :
               
                    trace("No matches found for switch (e.type)");
            }
        }
       
        private function stayActive(e:MouseEvent):void
        {
            changeColor(e.target, bkgColorActive, borderColorActive, txtColorActive);
            e.target.removeEventListener(MouseEvent.MOUSE_OVER, buttonEventsHandler);
            e.target.removeEventListener(MouseEvent.MOUSE_OUT, buttonEventsHandler);
            e.target.removeEventListener(MouseEvent.CLICK, buttonEventsHandler);
           
            if (activeSet)
            {               
                currentlyActive.target.addEventListener(MouseEvent.MOUSE_OVER, buttonEventsHandler);
                currentlyActive.target.addEventListener(MouseEvent.MOUSE_OUT, buttonEventsHandler);
                currentlyActive.target.addEventListener(MouseEvent.CLICK, buttonEventsHandler);
                changeColor(currentlyActive.target, bkgColorOut, borderColorOut, txtColorOut);                       
            }
           
            currentlyActive = e;
            activeSet = true;
        }
       
    //----------------------------------------------------------------------------------------------------
    //                                                                                         SOUND METHODS
    //----------------------------------------------------------------------------------------------------       
               
        public function startSound1():void
        {
            var request:URLRequest = new URLRequest(urlSong);
            var soundFactory:Sound = new Sound();
            soundFactory.load(request);
            song = soundFactory.play();   
            song.addEventListener(Event.SOUND_COMPLETE, soundComplete);
            myTransform.volume = .1;
            song.soundTransform = myTransform;           
        }
        public function startSound2():void
        {
            var request2:URLRequest = new URLRequest(urlSong2);
            var soundFactory2:Sound = new Sound();
            soundFactory2.load(request2);
            song2 = soundFactory2.play();   
            song2.addEventListener(Event.SOUND_COMPLETE, soundComplete2);
            myTransform2.volume = .7;
            song2.soundTransform = myTransform2;       
        }
        private function soundComplete(e:Event):void
        {
            startSound1();
        }
        private function soundComplete2(e:Event):void
        {           
            startSound2();
        }
       
        function playSound(event:MouseEvent):void
        {
            SoundMixer.stopAll();           
            controlsContainer.play_btn.visible = false;
            controlsContainer.stop_btn.visible = true;
            startSound1();
            startSound2();
        }
       
        function stopSound(event:MouseEvent):void
        {
            song.stop();
            song2.stop();
            SoundMixer.stopAll();           
            controlsContainer.stop_btn.visible = false;
            controlsContainer.play_btn.visible = true;
        }
       
    //----------------------------------------------------------------------------------------------------
    //                                                                                     SLIDESHOW METHODS
    //----------------------------------------------------------------------------------------------------   
   
        private function loadImages(thePath:String):void
        {       
            var my_url:String = thePath;
            my_loader = new Loader();
            my_loader.load(new URLRequest(my_url));
            my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
               
            if (holder.numChildren == 0)
            {
                holder.addChildAt(my_loader, 0);
                my_loader.alpha = 0;
                Tweener.addTween(my_loader, {alpha:1, time:1, transition:"linear"});               
            } else if (holder.numChildren == 1)
            {
                holder.addChildAt(my_loader, 1);
                my_loader.alpha = 0;
                Tweener.addTween(my_loader, {alpha:1, time:1, transition:"linear", onComplete:done, onCompleteParams:[0]});               
            } else if (holder.numChildren == 2)
            {
                holder.addChildAt(my_loader, 0);
                my_loader.alpha = 0;
                Tweener.addTween(my_loader, {alpha:1, time:1, transition:"linear", onComplete:done, onCompleteParams:[1]});           
            }   
            function done(theNum:Number)
            {
                holder.removeChildAt(theNum);
            }
           
            my_preloader = new TextField();
            my_preloader.text="Loading";
            my_preloader.autoSize=TextFieldAutoSize.CENTER;
            my_preloader.x = (stage.stageWidth - my_preloader.width)/2;
            my_preloader.y = (stage.stageHeight - my_preloader.height)/2;
            addChild(my_preloader);
        }
       
        private function onComplete(e:Event):void
        {                   
            var my_loaderInfo:LoaderInfo = LoaderInfo(e.target);
            my_loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
            removeChild(my_preloader);
            my_preloader = null;
        }
       
        private function timerListener(e:TimerEvent):void
        {
            my_playback_counter++;
            if (my_playback_counter == my_total) {
                my_playback_counter = 0;
            }
            slideButtons[my_playback_counter].dispatchEvent(new MouseEvent(MouseEvent.CLICK));
        }
       
        private function stopTimer(e:MouseEvent):void
        {
            my_timer.stop();           
            controlsContainer.pause_btn.visible = false;
            controlsContainer.go_btn.visible = true;
        }
       
        private function playTimer(e:MouseEvent):void
        {           
            my_timer.reset();
            my_timer.start();
            controlsContainer.pause_btn.visible = true;
            controlsContainer.go_btn.visible = false;
        }
       
        // End of class
    }   
}


This topic has been closed for replies.
Correct answer Ned Murphy

Not too many people are going to drill down thru all that code to try to find out how it works and what part is relevant to your issue.  Since the problem occurs online and not locally, it is probably an issue with loading time.  What you should do if you don't already is to wait until a file is fully loaded before you add it to the display.  So if you use a loader and have a COMPLETE listener for it, use the COMPLETE event handler function to add the newly loaded file to the display.

1 reply

Ned Murphy
Ned MurphyCorrect answer
Legend
December 29, 2010

Not too many people are going to drill down thru all that code to try to find out how it works and what part is relevant to your issue.  Since the problem occurs online and not locally, it is probably an issue with loading time.  What you should do if you don't already is to wait until a file is fully loaded before you add it to the display.  So if you use a loader and have a COMPLETE listener for it, use the COMPLETE event handler function to add the newly loaded file to the display.

Inspiring
December 29, 2010

Thank you! I'm going to try it.. It seems to be a performance issue too.. as it loads  fine sometimes..

Thank you very much for your reply!

Lana