As2 Class -- crossfade slideshow -- interval

Hi all!

I have a slideshow class, wich is nearly finished, but I have some problem with setInterval.

I think the setInterval is defined as it should be, but it doesn’t work:
var timerInterval = setInterval(this, “imageGen”, dataArray);

Could someone check the as code?

Thanks in advance
Zsolt

the whole thing:
http://www.graphis.eu/code/Crossfadi...eshowClass.zip




/**
 * mod: www.graphis.eu
 *
 *
 * FIXED
 * variables witch were undefined are now fixed
 * 
 * ERROR
 * swapPlace function doesnt get executed ! Why????
 *
 */



// packages
import mx.transitions.Tween; 
import mx.transitions.easing.*;



// Broken Slideshow Class : http://www.actionscript.org/forums/showthread.php3?t=129798
// based on Todd Dominey's AS2 code from here: 
// http://whatdoiknow.org/archives/001629.shtml



class Slideshow {

	// Properties
	private var order:String;
	private var looping:String;
	private var fadeTime:Number;
	private var pauseTime:Number;
	private var container_mc:MovieClip;
	private var watcher_mc:MovieClip;
	private var target_mc:MovieClip;
	private var timerInterval:Number;
	private var randomNum:Number;
	private var randomNumLast:Number;
	private var i:Number;
	private var p:Number;
	private var alphaTween:Tween;
	
	// Constructor
	public function Slideshow(target:MovieClip, depth:Number, x:Number, y:Number, imageArray:Array, fade:Number, pause:Number) {
	
		trace ( "______ class Slideshow ______" );
	
		// set default (and static for now) values for order and looping
		order = "sequential";
		looping = "yes";
		
		// set target clip
		target_mc = target;
		
		// create the container clip
		container_mc = target_mc.createEmptyMovieClip("container_mc", depth);
		
		// movie clip containers
		target_mc.container_mc.createEmptyMovieClip("loader1_mc", 2);
		target_mc.container_mc.createEmptyMovieClip("loader2_mc", 1);
		
		// preload watcher
		watcher_mc = target_mc.createEmptyMovieClip("watcher_mc", 100);
		
		// set container_mc position
		target_mc.container_mc._x = x;
		target_mc.container_mc._y = y;
		
		fadeTime = fade;
		trace ( " fadeTime " + fadeTime );
		
		pauseTime = pause;
		trace ( " pauseTime " + pauseTime );
		
		randomNum = 0;
		randomNumLast = 0;
		imageGen( fadeTime, pause, imageArray );						
	}
	
	
	
	
	
	//
	private function imageGen( fadeTime, pause, dataArray ) {
	
	trace ( "   ___ func imageGen ______" );
	
		// random, or sequential?
		if (order == "random") {
			// choose random # between 0 and total number of images
			while (randomNum == randomNumLast) {
				randomNum = Math.floor(Math.random() * dataArray.length);
			}
			loadImages( fadeTime, pause, dataArray, randomNum );
			randomNumLast = randomNum;
		} else if (order == "sequential") {
			// start at 0, increment to total number of images, then drop back to zero when done
			if (p == undefined || p == dataArray.length && looping == "yes") {
				p = 0;
			} else {
				break;
			}
			loadImages( fadeTime, pause, dataArray, p);
			
			
			trace ( "   imagegen   " );
			trace ( "   fadeTime   " + fadeTime);
			trace ( "   pause   " + pause);
			trace ( "   dataArray   " + dataArray);
			trace ( "   p   " + p );
			
			
			p++;
		} 
		clearInterval(timerInterval);
	}
	
	
	
	
	//
	private function loadImages( fadeTime, pause, dataArray, num ) {
	
	trace ( "   ___ loadImages imageGen ______" );
	trace ( "   ___ fadeTime   " + fadeTime);
	trace ( "   ___ pause      " + pause);
	trace ( "   ___ dataArray  " + dataArray);
	trace ( "   ___ p          " + p );
	
	trace ( "   ___ i          " + i );
	
	trace ( "   NOTE  i is undefined  "  );
	
		if (i == undefined || i == 2) {
			i = 2;
			createLoader( fadeTime, pause, i, dataArray, num );
			i = 1;
		} else if (i == 1) {
			createLoader( fadeTime, pause, i, dataArray, num );
			i = 2;
		}
	}
	
	
	
	
	//
	private function createLoader( fadeTime, pause, i, dataArray, num ) {
	
	trace ( "   ___  createLoader ______" );
	trace ( "   ___ fadeTime   " + fadeTime);
	trace ( "   ___ pause      " + pause);
	trace ( "   ___ dataArray  " + dataArray);
	trace ( "   ___ p          " + p );
	trace ( "   ___ i is i defined?         " + i );
	
	
		// I'm pretty sure the next line is one reason why it doesn't work
		// How to refer to target_mc?
		// 		var thisLoader:MovieClip = eval("container_mc.loader"+i+"_mc");
		// thisLoader=eval("container_mc.loader"+i+"_mc");
		var thisLoader:MovieClip = eval( "container_mc.loader" + i + "_mc");
		
		trace ( "   thisLoader = " + thisLoader );
		
		thisLoader._alpha = 50; // this is the value wicht the mc has when the image is loaded in it // 50 for debug purpouses should be 0
		thisLoader.loadMovie(dataArray[num]);
		watcher_mc.onEnterFrame = function() {
			var picLoaded = thisLoader.getBytesLoaded();
			var picBytes = thisLoader.getBytesTotal();
			if (isNaN(picBytes) || picBytes<4) {
				return;
			}
			
			
			if ( picLoaded/picBytes >= 1) {
			
			trace ( "   ___  createLoader (picLoaded/picBytes>=1 ______" );
			
			trace ( "   ___  calling swapPlace ______" );
			
				// I'm pretty sure the next line is another reason why it doesn't work	
				// swapPlace doesnt get executed why???
				swapPlace( container_mc.loader2_mc, 1);
				//
			trace ( "   ___  end calling swapPlace ______" );
					
				// fade image
				var alphaTween:Object = new Tween( thisLoader, "_alpha", Strong.easeOut, 50, 100, fadeTime, true);
				 
				trace("alphaTween="+typeof(alphaTween));
		
				// 1 sec
				// var timerInterval = setInterval(this, "imageGen", 1*1000, dataArray);
				
				// for debug
				var timerInterval = setInterval(this, "imageGen", dataArray);
				
	trace ( "   ___  createLoader ______" );
	trace ( "   ___ fadeTime   " + fadeTime);
	trace ( "   ___ pause      " + pause);
	trace ( "   ___ dataArray  " + dataArray);
	trace ( "   ___ p          " + p );
	trace ( "this " + this + "__ " +typeof(this) );
				
				// and yet:
				trace("timerInterval type ="+typeof(timerInterval));
				trace ("   timerInterval    " + timerInterval);
				
				delete this.onEnterFrame;
			}
		};
	}
	
	
	
	
	// 
	private function swapPlace(clip, num) {
	trace ( "   ___ swapPlace ______" );
		trace("swapPlace called");
		// I'm pretty sure the next line is yet another reason why it doesn't work
		// was
		//eval(clip).swapDepths(eval( "container_mc.loader" + num + "_mc"));
		eval(clip).swapDepths(eval( container_mc.loader + num + "_mc"));
	}
	
}