Flere timere i AS3
Hej eksperter.Jeg er ved at færdiggøre en streamingafspiller - men har et problem med nogle "annotations", i dette tilfælde er det små, separate swf-filer der indlæses løbende.
[BESKRIVELSE]
En XML-fil definerer f.eks. at 15 sekunder efter start skal en bjælke med "Breaking News | Obama kommer til Danmark 13. maj" og skal vises i 5 sekunder.
Efter 30 sekunder kommer så måske en ny bjælke ind og siger "I studiet: Helle Thorning Schmidt".
[PROBLEM]
Jeg kan ikke greje, hvordan dynamiske timere oprettes... burde dette ikke virke? Altså hvor jeg laver en stribe timere og fylder dem ind i et array (annotationtimers.push(annotationtimer)
public function indlaesannotations() {
// Indlæs nu annotations
var aktuelannotation = 0;
var annotationtimer:Timer;
var annotationtimers:Array = new Array();
for (var i=0; i<konfiguration.annotations.length; i++) {
trace(i+" kasser øl");
if (konfiguration.annotations[i].recurrent == true || konfiguration.annotations[i].recurrent == "true") {
annotationtimer = new Timer(Number(konfiguration.annotations[i].thedelay)*1000);
} else {
// Kør kun hændelsen een gang
annotationtimer = new Timer(Number(konfiguration.annotations[i].thedelay)*1000, 1);
}
// Start timeren
annotationtimer.addEventListener("timer", visannotation);
annotationtimer.start();
// Læg dem ind i et array, så vi kan have flere på samme tid
annotationtimers.push(annotationtimer);
}
}
public function visannotation(event:TimerEvent) {
if (connected) {
annotationloader = new Loader();
annotationloader.name = "annotation_mc";
// Indlæs swf-filen
annotationloader.load(new URLRequest("."+konfiguration.annotations[aktuelannotation].annotationskin));
annotationloader.contentLoaderInfo.addEventListener(Event.COMPLETE, annotationLoadComplete);
annotationloader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, annotationFejl);
annotationdurationtimer = new Timer(konfiguration.annotations[aktuelannotation].theduration*1000, 1);
annotationdurationtimer.addEventListener("timer", fjernannotation);
annotationdurationtimer.start();
if (video.visible == true) {
// Annotations skal kun vises, såfremt videoplaceholderen OGSÅ er synlig.
annotations_mc.visible = true;
}
}
}
public function fjernannotation(event:TimerEvent) {
annotationdurationtimer.stop();
annotations_mc.visible = false;
annotationloader.unload();
}
public function annotationLoadComplete(e:Event) {
annotations_mc.addChild(annotationloader);
e.currentTarget.content.placeholderniveau1_mc.placeholderniveau2_mc.textplaceholder_txt.htmlText = konfiguration.annotations[aktuelannotation].line1;
e.currentTarget.content.placeholderniveau1_mc.placeholderniveau2_mc.textplaceholder_txt.textColor = "0x"+konfiguration.annotations[aktuelannotation].fontcolor;
}
Skal timerobjekterne i stedet oprettes under separate variabler - og disse variabler pushes ind i et array? (Blot for at vi kan holde styr på dem). Der sker blot det, at kun FØRSTE annotation vises (og forsvinder igen)