I have a pretty messy array mixture going on here … but it works. The next image, and caption work fine. However when you get back to the first array, it will not loop backwards to the end of the array. Also I need to rest the timer when the button is clicked … but I can take care of it myself, just a forewarning for those that test this. Here is the code:
Stage.scaleMode = 'noScale';
var frames = 45;
var images:Array = new Array();
images.push(["cotm1", "CAR OF THE MONTH - KEVIN D. 2001 CAMARO SS1"]);
images.push(["cotm2", "CAR OF THE MONTH - KEVIN D. 2001 CAMARO SS2"]);
images.push(["cotm3", "CAR OF THE MONTH - KEVIN D. 2001 CAMARO SS3"]);
images.push(["cotm4", "CAR OF THE MONTH - KEVIN D. 2001 CAMARO SS4"]);
var imagesindex = 0;
var imagescap = 0;
var framecount = 0;
var transarea = 0;
var basepoint = new flash.geom.Point(0,0);
var displaybmp = new flash.display.BitmapData(400,229);
var transbmp = new flash.display.BitmapData(400,229);
loadTransBitmap( images[imagesindex][0] );
caption.text = images[0][1];
displaybmp.draw(transbmp);
var format:TextFormat = new TextFormat();
format.letterSpacing = 1;
caption.setTextFormat(format);
this.createEmptyMovieClip("display_mc", 1);
display_mc.attachBitmap(displaybmp, 1);
var intHandle:Number;
function loopImages(){
loadTransBitmap( getNextImage() );
startTransition();
caption.text = getNextCaption();
caption.setTextFormat(format);
}
intHandle = setInterval(this, "loopImages", 5000);
function getNextImage(){
imagesindex++;
imagesindex %= images.length;
return images[imagesindex][0];
}
function getNextCaption(){
imagescap++;
imagescap %= images.length;
return images[imagescap][1];
}
function getPrevImage(){
imagesindex--;
imagesindex %= images.length;
return images[imagesindex][0];
}
function getPrevCaption(){
imagescap--;
imagescap %= images.length-1;
return images[imagescap][1];
}
function loadTransBitmap(id){
var tempbmp = flash.display.BitmapData.loadBitmap(id);
transbmp.copyPixels(tempbmp, tempbmp.rectangle, basepoint);
tempbmp.dispose();
}
function startTransition(){
framecount = 0;
transarea = transbmp.width * transbmp.height;
onEnterFrame = transOnEnterFrame;
}
function transOnEnterFrame(){
framecount++;
var amount = transarea * framecount/frames;
displaybmp.pixelDissolve(transbmp,transbmp.rectangle,basepoint,0,amount);
if (framecount >= frames){
delete this.onEnterFrame;
}
}
bprev.onRelease = bprev.onReleaseOutside=function () {
loadTransBitmap( getPrevImage() );
startTransition();
caption.text = getPrevCaption();
caption.setTextFormat(format);
};
bnext.onRelease = bnext.onReleaseOutside=function () {
loadTransBitmap( getNextImage() );
startTransition();
caption.text = getNextCaption();
caption.setTextFormat(format);
};
stop();