Hi I have a presentation that nearly works. I use a timer event to swap images every 5 seconds. The problem is as the timer gets started in the constructor, I have to wait a full 5 seconds for the first image. Is there a way to forcefully trigger the function.
This is doing my head in.
Thanks
Desmond.
Code:
package code
{
/*****************************************
* MovieSlides :
* Demonstrates a PPT slide show.
* -------------------
* See MovieSlides.fla
****************************************/
import flash.events.*;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.utils.Timer;
import flash.net.URLRequest;
import flash.sampler.NewObjectSample;
public class MovieSlides extends MovieClip
{
var imageLoader1:Loader = new Loader();
var imageLoader2:Loader = new Loader();
var myTimer:Timer = new Timer(5000,0);
var TransissionTimer:Timer = new Timer(100,0); // Will start and stop this
var Counter:int = 0;
var Dir:String = "MalawiPics/";
var MyImages:Array = new Array(
"S_DSC_0106.jpg","S_DSC_0218.jpg","S_DSC_0768.jpg",
"S_DSC_0790.jpg","S_DSC_0929.jpg","S_DSC_0988.jpg",
"S_DSC_1173.jpg","S_IMG_0848.jpg","S_IMG_0871.jpg",
"S_IMG_0877.jpg","S_IMGP0293.jpg","S_IMGP0295.jpg",
"S_IMGP0307.jpg","S_IMGP0333.jpg","S_IMGP0358.jpg",
"S_IMGP0362.jpg","S_IMGP0392.jpg","S_IMGP0422.jpg"
);
var AlphaValue1:Number = 0.2;
var AlphaValue2:Number = 1;
var AlphaStep:Number = 0.01;
var CurrentPlayer:int = 1;
public function MovieSlides()
{
// constructor code
imageLoader1.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
imageLoader1.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
imageLoader2.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
imageLoader2.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
// var link:URLRequest = new URLRequest();
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
TransissionTimer.addEventListener(TimerEvent.TIMER,MyAlpha);
//loadImage(Dir + MyImages[0]);
//Counter++;
myTimer.start();
}
function timerListener(event:TimerEvent):void
{
loadImage(Dir + MyImages[Counter]);
Counter++;
if(Counter > 16) // I only have 16 images in array
Counter = 0;
}
function loadImage(url:String):void
{
if(CurrentPlayer == 1)
imageLoader1.load(new URLRequest(url));
if(CurrentPlayer == 2)
imageLoader2.load(new URLRequest(url));
if(CurrentPlayer == 1) // Toggle loaders 1 and 2
CurrentPlayer = 2;
else
CurrentPlayer = 1;
}
function imageLoading(e:Event):void
{
// do nothing yet
}
function imageLoaded(e:Event):void // Shared by both Loaders
{
if(CurrentPlayer == 1)
{
AlphaValue1 = 0.2;
AlphaValue2 = 1.0;
imageLoader1.alpha = AlphaValue1;
imageArea1.addChild(imageLoader1);
}
else
{
AlphaValue1 = 1.0;
AlphaValue2 = 0.2;
imageLoader2.alpha = AlphaValue2;
imageArea2.addChild(imageLoader2);
}
TransissionTimer.start();
}
function MyAlpha(event:TimerEvent):void // TransissionTimer
{
if(CurrentPlayer == 2)
{
AlphaValue1 += AlphaStep;
AlphaValue2 -= AlphaStep;
imageLoader1.alpha = AlphaValue1;
imageLoader2.alpha = AlphaValue2;
if(imageLoader1.alpha == 1)
{
TransissionTimer.stop();
imageLoader1.alpha = 1;
}
}
if(CurrentPlayer == 1)
{
AlphaValue1 -= AlphaStep;
AlphaValue2 += AlphaStep;
imageLoader1.alpha = AlphaValue1;
imageLoader2.alpha = AlphaValue2;
if(imageLoader2.alpha == 1)
{
TransissionTimer.stop();
imageLoader2.alpha = 1;
}
}
}
}
}