setInterval slideshow

Se Karendt's brugerprofil
Indmeldt: 25-05-2007
Indlæg: 78
Er offline

Hey Folkens

Jeg sidder og arbejder på et slideshow funktion, som ikke helt vil som jeg.

Jeg har lagt 4 billeder ind i frame 1 og vil så skifte billed efter 30 sek med actionscript.
Mine movieclips hedder:
image1_mc
image2_mc
image3_mc
image4_mc

Til formålet forsøger jeg med følgende kode:

var intervalId:Number;
var count:Number = 1;
var maxCount:Number = 4;
var duration:Number = 5000;
 
function slideShow():Void {
 var myTween:Tween = new Tween("image"+count+"_mc","_alpha",Regular.easeOut,100,0,5,false);
 myTween.onMotionFinished = function() {
     if(count >= maxCount) {
     clearInterval(intervalId);
   } 
   count++;
  }
} 
intervalId = setInterval(this, "slideShow", duration);

Men det virker ikke!

Idéen er at den skal fade image1_mc også skal count ændre nummeret til 2, så det derefter bliver til image2_mc.

Nogen som kan hjælpe mig med dette og så kan jeg ligeså godt sige, at når image4_mc er fadet væk, så skal den starte for fra.

Håber en kan hjælpe derude.

Mvh
Karendt

Kommentarer

Se Christen's brugerprofil
Indmeldt: 19-02-2008
Indlæg: 26
Er offline

Jeg ved ikke om denne hjælper, men ligner lidt det du prøver.

http://www.kirupa.com/developer/mx2004/xml_slideshow.htm
Det er vist også i AS2

Se jakwag's brugerprofil
Indmeldt: 18-05-2007
Indlæg: 241
Er offline

Umiddelbart kan jeg se flere fejl i scriptet:

intervalId = setInterval(this, "slideShow", duration);

Skal være uden gåseøjne på functionsnavnet:

intervalId = setInterval(this, slideShow, duration);

når du referere til et object i denne linie:
var myTween:Tween = new Tween("image"+count+"_mc","_alpha",Regular.easeOut,100,0,5,false);

Skal det se ud som:
this["image"+count+"_mc"]

Jeg ved ikke helt om det er mig der gør noget galt, men personligt har jeg aldrig fået det til at virke at sende this med i setinterval som der står i referencen at man kan. Jeg bruger Delegate i stedet.

Sidst skal du ikke slette intervalet men resette count.

Prøv dette:

import mx.utils.Delegate;
 
var intervalId:Number;
var count:Number = 1;
var maxCount:Number = 4;
var duration:Number = 5000;
 
function slideShow():Void {
 var myTween:Tween = new Tween(this["image"+count+"_mc"],"_alpha",Regular.easeOut,100,0,5,false);
 myTween.onMotionFinished = function() {
     if(count >= maxCount) {
     count = 1;
   } 
   count++;
  }
} 
intervalId = setInterval(Delegate.create(this, slideShow), duration);

Wagner

// Jakob Wagner