Function works, but not when called by interval

I have a function (“advance_slideshow()”) that ticks a slide show up by one, then it loops back at the end. It works when called from the key listener I set up for debugging. However it does not work when called from setInterval. I added a trace to the function to confirm that it was being called, which it is; it just doesn’t work when called via the interval. Any ideas??

[This is Flash 8, AS2]


//////////////////////////
/* IMPORTS AND INCLUDES */
//////////////////////////
import mx.transitions.*;
import mx.transitions.easing.*;
#include "loader.as"
#include "strip_undefined.as"
#include "increment.as"
#include "fades.as"
#include "strip_zeroes.as"
//////////////////////////
/* SETTINGS, HARD CODE */
//////////////////////////
var slide_x:Number = 0;
var slide_y:Number = 0;
var slide_path:String = '../images/';
var slide_name:String = 'slideshow_breakfast_a_';
var slide_ext:String = '.jpg';
load_something('dte1', '../dte/', '.dte');
///////////////////////////////////
/* SETTINGS, FROM DEFAULT OR DTE */
///////////////////////////////////
var default_slideshow_length:Number = 4;
var default_slideshow_fade_duration:Number = 1;
var default_slideshow_slide_duration:Number = 5;
/////////////////////////////////
/* DO NOT EDIT BELOW THIS LINE */
/////////////////////////////////
//////////////////////////////////////////
/* TRIGGER CALLBACK - DISPLAY MODE ONLY */
//////////////////////////////////////////
function trigger_function(curr_object):Void {
	trace('trigger ' + curr_object);
	slideshow_length = strip_zeroes(this[curr_object].slideshow_length, default_slideshow_length);
	slideshow_fade_duration = strip_zeroes(this[curr_object].slideshow_fade_duration, default_slideshow_fade_duration);
	slideshow_slide_duration = strip_zeroes(this[curr_object].slideshow_slide_duration, default_slideshow_slide_duration);
	/* CONVERT DURATIONS TO MILLISECONDS */
	slideshow_fade_duration *= 10;
	slideshow_slide_duration *= 1000;
	init_slideshow();
	slideshow_interval();
	//add v2t
}
////////////////////////
/* SLIDESHOW INTERVAL */
////////////////////////
var slide_interval;
function slideshow_interval():Void {
	if (slide_interval == undefined) {
		slide_interval = new setInterval(advance_slideshow, slideshow_slide_duration);
		//setInterval(advance_slideshow, slideshow_slide_duration);
		//trace('slide_interval ' + slide_interval);
	}
	//else {           
	//theoretically, so interval can wait for tween motion complete
	//		clearInterval(slide_interval);
	//	}
}
///////////////////////
/* ADVANCE SLIDESHOW */
///////////////////////
function advance_slideshow():Void {
	trace('advance_slideshow()');
	//called from slideshow_interval()
	cnt = increment(1, slideshow_length);
	trace('cnt: ' + cnt);
	//proceed only if there's more than one slide
	if (slideshow_length > 1) {
		if (cnt >= 3) {
			//for moving bottom slide off stage when under two other slides
			this['slide_mc' + (cnt - 2)]._alpha = 0;
			this['slide_mc' + (cnt - 2)]._x = Stage.width;
			this['slide_mc' + (cnt - 2)]._y = Stage.height;
		}
		if (cnt <= 1) {
			//for fading out last slide back to first
			this['slide_mc' + cnt]._x = slide_x;
			this['slide_mc' + cnt]._y = slide_y;
			this['slide_mc' + cnt]._alpha = 100;
			this['slide_mc' + (slideshow_length - 1)]._alpha = 0;
			//this['slide_mc' + slideshow_length]._alpha = 100;
			fade_out(this['slide_mc' + slideshow_length], slideshow_fade_duration);
			slideshow_interval();
			//for fading in next slide over previous
		}
		else {
			this['slide_mc' + cnt]._x = slide_x;
			this['slide_mc' + cnt]._y = slide_y;
			this['slide_mc' + cnt]._alpha = 0;
			fade_in(this['slide_mc' + cnt], slideshow_fade_duration);
			slideshow_interval();
		}
	}
	else {
		//for if there's only one slide
		this['slide_mc' + 1]._x = slide_x;
		this['slide_mc' + 1]._y = slide_y;
		this['slide_mc' + 1]._alpha = 100;
		this['slide_mc' + slideshow_length]._alpha = 100;
	}
}
////////////////////
/* INIT SLIDESHOW */
////////////////////
//called from trigger_function(), which is callback from load_something()
var slide_interval;
var slide_loader_listener:Object = new Object();
function init_slideshow():Void {
	//removed a parseInt on line below; take note
	for (si = 1; si < parseInt(slideshow_length) + 1; si++) {
		//create loader for each slide
		this['slide_loader' + si] = new MovieClipLoader();
		//create mc for each slide
		this.createEmptyMovieClip('slide_mc' + si, this.getNextHighestDepth());
		curr_ld = this['slide_loader' + si];
		curr_mc = _level0['slide_mc' + si];
		trace(curr_mc._name + '.getDepth ' + curr_mc.getDepth());
		//load image into corresponding loader at idx
		curr_ld.loadClip(slide_path + slide_name + si + slide_ext, curr_mc);
		//hide all slides initially
		curr_mc._alpha = 0;
		curr_mc._x = Stage.width;
		curr_mc._y = Stage.height;
		//stop loading images after slideshow_length
		if (si >= slideshow_length) {
			curr_ld.addListener(slide_loader_listener);
			slide_loader_listener.onLoadInit = function(target_mc:MovieClip) {
				trace("last image loaded: " + target_mc);
			};
		}
	}
}
///////////
/* DEBUG */
///////////
var listener:Object = new Object();
listener.onKeyDown = function():Void  {
	switch (Key.getCode()) {
	case 65 :
		trace('a pressed');
		advance_slideshow();
		break;
	}
};
Key.addListener(listener);