Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-09-2005, 08:02   #1 (permalink)
Noobster
 
Registriert seit: May 2005
Beiträge: 107
setInterval problem

Hallo zusammen,

folgendes problem:

ich habe ein swf in dem verschiedene infos (werbung, ticker, header etc.) laufen. nun soll aber nach z.B. 5 min über diese "werbe" swf ein z.B. schwarzer mc geladen werden, was soetwas, wie eine art pause sein soll.

diesen pausen mc lade ich auf die bühne per attachMovie.
danach, so nach ca. 10 sec. soll dieser mc per removeMovieclip wieder entfernt werden und die alte werbung soll wieder zum vorschein kommen.

das ganze hab ich versucht mit setInterval zu regeln, jedoch will es nur beim ersten mal funktionieren.

hier mein script:

ActionScript:
  1. var ausblendzeit = 20000; //hier z.B.nach 20 sec. soll pause eingeblendet werden
  2. var einblendzeit = 10000; // nach 10 sec. soll wieder werbung zu sehen sein
  3.  
  4. los = function(){
  5.    var id_an = setInterval(zeitcheck_an, ausblendzeit);
  6. };
  7.  
  8. zeitcheck_an = function(){
  9.    _root.attachMovie("pausendummy", "pausendummy", 1);//pausendummy wird einfach über die werbung gelegt
  10.    clearInterval(id_an);
  11.    var id_aus = setInterval(zeitcheck_aus, 10000);
  12. };
  13.  
  14. zeitcheck_aus = function(){
  15.    pausendummy.removeMovieClip();
  16.    clearInterval(id_aus);
  17.    los();
  18. };
  19.  
  20. los();

also so, wie ich mir das jetzt gedacht habe sollte in diesem Bsp. die werbung 20 sec. laufen, dann für 10 sec. der pausendummy eingeladen werden und dann wieder für 20 sec. die werbung laufen und und und.
jedoch macht er diese prozedur nur einmal von der zeit gesehen richtig und danach blendet er ca. alle 10 sec. für einen bruchteil einer sec. den pausendummy ein und removed ihn sofort wieder. und ich habe das gefühl je länger ich diese sache laufen lasse um so kürzer werden die intervall aufrufe.

kann mir da jemand bei meinem problem helfen? wichtig ist das die beiden mcs (werbung und pausendummy) in unterschiedlicher länge gezeigt werden.

vielleicht lieg ich auch mit der setInterval Methode falsch und es gibt was besseres zur bewältigung des problems???

um hilfe wär ich dankbar.

gruß,


Mo...
Motionguru ist offline   Mit Zitat antworten
Alt 13-09-2005, 08:31   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Wenn du die Interval-Variablen mit var in einer Funktion deklarierst verschwinden sie am Ende der Funktion. Deshalb musst du die Intervalle irgendwo verlässlich zwischenspeichern, z.B. in _root. Im Moment kannst du die Intervalle nicht wieder löschen; gib z.B. vor dem clearInterval mal die jeweilige Variable aus.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 13-09-2005, 08:37   #3 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
Nicht schön aber selten
ActionScript:
  1. var ausblendzeit = 2000;
  2. //hier z.B.nach 20 sec. soll pause eingeblendet werden
  3. var einblendzeit = 1000;
  4. // nach 10 sec. soll wieder werbung zu sehen sein
  5. werbung = function(){
  6.     an = setInterval(function () {
  7.     trace("an"); // oder tu was immer du willst
  8.         aus=setInterval(function () {
  9.             trace("aus"); // oder tu was immer du willst
  10.             werbung();
  11.             clearInterval(aus)
  12.             }, ausblendzeit);
  13.     clearInterval(an)
  14.     }, einblendzeit);
  15. }
  16. werbung();
Seventy6 ist offline   Mit Zitat antworten
Alt 13-09-2005, 08:39   #4 (permalink)
Noobster
 
Registriert seit: May 2005
Beiträge: 107
aha. das mit den in der funktion angelegten variablen versteh ich, aber wie soll ich die ausgeben? es sind doch setInterval vars? er gibt mir da garnichts aus, wenn ich trace(id_a) z.B. mache.?? oder versteh ich da was falsch.

und kann ich diese id's eigentlich auch _global machen??
würde das sinn machen?


trotzdem danke schonmal für die schnelle hilfe
Motionguru ist offline   Mit Zitat antworten
Alt 13-09-2005, 08:43   #5 (permalink)
Noobster
 
Registriert seit: May 2005
Beiträge: 107
halt es geht. vielen dank, das war mein problem. ich hab die id variablen jetzt _global gemacht und es funzt. tausend dank.

ich hätte den fehler einfach nicht gefunden.

aber eine frage noch:

wenn ich jetzt trece(id_an); mache, dann gibt er mir das erste mal die zahl 1 aus und bei jedem erneuten aufruf erhöht er um eins. was hat das zu bedeuten??

tausend dank nochmal


Mo...
Motionguru ist offline   Mit Zitat antworten
Alt 13-09-2005, 12:49   #6 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Naja, in der Variablen wird nicht das Interval gespeichert, sondern eine ID, über welche das Interval identifiziert werden kann. Und dazu muss die ID logischer Weise immer eine andere sein, im einfachsten Fall zählt man sie eben einfach hoch.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 21-09-2005, 15:39   #7 (permalink)
Noobster
 
Registriert seit: May 2005
Beiträge: 107
hi nochmal,

also das beispiel von Seventy6 hat mir echt gut geholfen.
jetzt hab ich aber ein ähnliches problem und weiß einfach nicht, wie ich da am cleversten vorgehe??

also diesmal habe ich 5 swf's und eine Master.swf. die master soll anhand von "ckeck" variablen prüfen, welche der 5 swf's in einer loop abgespielt werden sollen.
also z.B.
ActionScript:
  1. var check_loop1 = true; //abspielen
  2. var check_loop2 = false;//nicht abspielen
  3. var check_loop3 = true;//abspielen
  4. var check_loop4 = false;//nicht abspielen
  5. var check_loop5 = true;//abspielen
  6.  
dann sollen in der master.swf die swf's 1, 3, und 5 abgespielt werden (in einer loop).
das wäre auch nicht so schwer. jetzt will ich aber, daß jede der swf's ca. 5 min läuft und erst dann die nächste (bei der die check_loop auf true steht) abgespielt wird.

ich dachte ich löse das mit setInterval, aber ich hab leider keine ahnung wie ich das mache? alle anläufe hab ich gleich wieder in die tonne gekickt, weils einfach zu nix geführt hat. (denkblockade!! )

also, wenn jemand nen tip hat, oder ratschläge, dann nehm ich die gerne an.

danke schonmal.


Gruß,

Mo...
Motionguru ist offline   Mit Zitat antworten
Alt 22-09-2005, 13:32   #8 (permalink)
Noobster
 
Registriert seit: May 2005
Beiträge: 107
keiner ne idee??

schade
Motionguru ist offline   Mit Zitat antworten
Alt 22-09-2005, 14:08   #9 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
Hallo
Ich würde an Deiner Stelle erst einmal prüfen, welche Werte eigentlich auf true gesetzt sind, und wie viele das sind, z.B. so:
ActionScript:
  1. aktiv = [];
  2. anzahl = 0;
  3. j = 0;
  4. for (i=0; i<=5; i++) {
  5.     if (this["check_loop"+i] == true) {
  6.         aktiv.push(i);
  7.         anzahl++;
  8.     }
  9. }
Und dannach warst Du mit setInterval schon auf dem richtigen Weg.
Du rufst Dein setInterval eben in Deinen definierten Abständen auf (5 min) und spielst dann die MC's ab, indem du die Zahlen aus dem Array anhängst ...
Am besten legst Du noch eine Variable an, die mitzählt wie oft Du schon abgespielt hast und die vergleichst Du mit der ermittelten Anzahl, damit Du auch das Interval wieder clearen kannst ... (Man was ein Schachtelsatz)
Das ganze ungefähr so, aber nur weil heute so schön die Sonne scheint
ActionScript:
  1. muh = setInterval(function () {
  2.     if (j<anzahl) {
  3.         trace(aktiv[j]);// Hier müssen die MC's + j abgespielt werden ...
  4.         j++;
  5.     } else {
  6.         clearInterval(muh);
  7.     }
  8. }, 200); // Hier wieder die Zeit einstellen ...
  9.  
Seventy6 ist offline   Mit Zitat antworten
Alt 22-09-2005, 14:21   #10 (permalink)
Noobster
 
Registriert seit: May 2005
Beiträge: 107
danke schonmal aber soweit war ich auch.

leider ist die ganze sache etwas komplizierter. es dreht sich da um eine loadMovie problematik.

hab jetzt leider keine zeit das groß zu erläutern. aber ich versuch die tage mal was hoch zu laden, damit ihr überhaupt versteht, was genau das problem ist.

trotzdem vielen dank für die mühen.

gruß,

Mo...
Motionguru ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele