Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-09-2008, 10:07   #1 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
setInterval greift nicht

hallo,

brauche mal wieder eure HIlfe

Ich muss eine kleine Bildershow mit dem Ken Burns Effekt realisieren, die also die Bilder ein wenig ein/auszoomt und dann ins nächste überblendet.
Hab das ganze mit transitions realisiert... jedoch greift das setInterval an der Stelle nicht, wo zuerst die Bilder über eine gewisse Zeit eingefadet werden sollen und erst NACH diesem Einfaden soll die funktion zum zoomen aufgerufen werden - er macht beides gleichzeitig. Wo liegt mein (Denk)Fehler?

ActionScript:
  1. function bigger(j) {
  2.     clearInterval(big);
  3.     var tw1 = new Tween(_root.preload["bild"+j], "_xscale", mx.transitions.easing.None.easeNone, 100, 90, 4.0, true);
  4.     var tw2 = new Tween(_root.preload["bild"+j], "_yscale", mx.transitions.easing.None.easeNone, 100, 90, 4.0, true);
  5. }
  6.  
  7.  
  8. TransitionManager.start(_root.preload["bild"+i], {type:Fade, direction:Transition.IN, duration:3, easing:None.easeNone});
  9. var big = setInterval(bigger(i), 4000);

Danke schonmal im Voraus!
jun-jun ist offline   Mit Zitat antworten
Alt 01-09-2008, 10:15   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Du rufst die Methode ja sofort auf.
PHP-Code:
var big setInterval(bigger4000i); 
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 01-09-2008, 10:17   #3 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
argh, danke... *kopf in sand steck* funktioniert nun, nur ich hab nu ne dauerschleife produziert, aber das krieg ich auch noch noch hin
jun-jun ist offline   Mit Zitat antworten
Alt 02-09-2008, 10:27   #4 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
Ich hab nun einen etwas seltsamen Folgefehler produziert, bie dem ich nochmal Hilfe bräuchte.

Hab eine forschleife, bei der bei jedem i-Wert andere Funktionen per setInterval aufgerufen werden - auf diese Weise wird die Bildershow mit KenBurnseffekt simuliert. Das Ganze funktioniert einwandfrei alle Bilder durch.
Das clearInterval steht in der jeweils aufgerufenen Funktion und das setInterval gelöscht.

Da die Show nun aber nicht nur einmal durchlaufen soll, sondern immer wieder von vorne anfangen, dachte ich mir, ich schreibe diese ganze forschleife, die so wunderhübsch funktioniert, als Funktion und lasse sie sich am Ende immer wieder selbst aufrufen.

Da Problem ist nun, dass die forschleife zwar auch als Funktion funktioniert, die Intervalle aber nicht mehr gelöscht werden, dh. er beachtet aus irgendeinem Grund die clearInterval-Befehle der aufgerufenen Funktionen nicht mehr. Habe ich irgendwas übersehen?

Hier ein Stückchen Code:

ActionScript:
  1. function eins(l) {
  2.     clearInterval(IDeins);
  3.     ... //weitere Befehle
  4. }
  5.  
  6.  
  7. function video() {
  8.   for (i=1; i<7; i++) {
  9.     if (i==1) {
  10.         var IDeins = setInterval(eins, 500, 1);
  11.     }
  12.  
  13. ... //usw.
  14.  
  15. video();

Gibts elegantere Lösungen als sich die Funktion immer wieder selbst aufrufen zu lassen, bzw. kann ich sone Endlosschleife auch produzieren, ohne die for-schleife als funktion zu schreiben (in der die Intervalle ja nicht mehr gelöscht werden)?

Geändert von jun-jun (02-09-2008 um 10:30 Uhr)
jun-jun ist offline   Mit Zitat antworten
Alt 02-09-2008, 10:33   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Warum löscht du denn die Intervalle, wenn du sie dann eh wieder setzen willst?
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 02-09-2008, 10:35   #6 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
weil sie ja nicht dauernd laufen sollen, sondern innerhalb der funktion bzw forschleife nur ein einziges mal - bis zum nächsten aufruf der funktion.
jun-jun ist offline   Mit Zitat antworten
Alt 02-09-2008, 10:41   #7 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Dann solltest du alle Intervall-ID's in einem Array speicher, und vor beginn der for Schleife alle Intervalle löschen.

PHP-Code:
function eins(lintervalIDIndex ) {
clearInterval(intervalIDListintervalIDIndex ]);
//weitere Befehle
}

var 
intervalIDList = new Array();
function 
video() {

for( var 
0intervalIDList.lengthi++ ) clearIntervalintervalIDList] );

for (
i=1i<7i++) {
if (
i==1) {
var 
IDeins setInterval(eins5001i);
intervalIDList] = IDeins
}

video(); 
__________________
ERROR: Signature is too large

Geändert von rendner[i] (02-09-2008 um 10:42 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 02-09-2008, 10:44   #8 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
danke, ich probiers mal
jun-jun ist offline   Mit Zitat antworten
Alt 02-09-2008, 13:28   #9 (permalink)
Nixnutz
 
Registriert seit: Sep 2004
Beiträge: 53
*den daumenhochsmilie such und nicht find*

Das war echt mein Lebensrettungstip, vielen lieben Dank
jun-jun 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:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele