Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-12-2004, 18:29   #1 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
setInterval in einer for-schlaufe

hi forum

steh grad auf dem schlauch. Versuche einen setInterval
in einer schlaufe zu verwenden, durch i soll der interval
laufend erhöht werden. das löschen des intervals krieg
ich jedoch nicht hin.

versuch:
PHP-Code:
tl=this
for (var 0i<3i++) {
    
tl['t'+i] = setInterval(function () {
        
trace(tl['t'+i]);
        
clearInterval(tl['t'+i]);
    }, 
1000*i);


geht aber net.
__________________
netro.biz
Skyla ist offline   Mit Zitat antworten
Alt 01-12-2004, 18:41   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
was soll denn genau passieren mit den intervallen und der for schleife? je nach dem kann man das nämlich auch anders lösen...
cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 01-12-2004, 18:48   #3 (permalink)
°
 
Benutzerbild von echo5-7
 
Registriert seit: Aug 2002
Ort: Baden-Baden
Beiträge: 3.962
hm, kann ein intervall sich selber löschen?
__________________

LRRM | BLOG | FACEBOOK | TWITTER | G+
echo5-7 ist offline   Mit Zitat antworten
Alt 01-12-2004, 18:49   #4 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
Zitat:
Zitat von salazar
je nach dem kann man das nämlich auch anders lösen...
cya, sal
ich meinte auch mehr ---> sollte man das anders lösen

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 01-12-2004, 18:52   #5 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
@echo
PHP-Code:
var id setInterval(function () {
    
trace('hellooo');
    
clearInterval(id);
}, 
2000); 

und jetzt das ganze in einem loop

@salazar: eigentlich einen mc attachen, spielt aber keine
rolle, geht ja auch um's prinzip und verständnis. lieber
keinen work-around.
__________________
netro.biz
Skyla ist offline   Mit Zitat antworten
Alt 01-12-2004, 19:06   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Ort: Hamburg
Beiträge: 99
für solche anwendungen habe ich eine kleine sequence klasse erstellt, klappt ganz gut damit:

ActionScript:
  1. import com.nesium.utils.Delay;
  2.  
  3.  
  4. class com.nesium.utils.Sequence
  5.     // v1.01
  6. {
  7.    
  8.     private var __delays        : Array;   
  9.     private var __pause  : Number;
  10.  
  11.     private var __atOnce    : Boolean;
  12.    
  13.    
  14.     public function Sequence( pause : Number, atOnce : Boolean )
  15.     {
  16.             __delays    = [];
  17.             __pause = pause;
  18.  
  19.             __atOnce    = atOnce;
  20.     }
  21.    
  22.     public function addStep( obj, func, args, time ) : Void
  23.     {
  24.         if ( time == undefined )
  25.  
  26.             time = __atOnce == true ? __pause * __delays.length : __pause * ( __delays.length + 1 );
  27.  
  28.        
  29.         __delays.push( new Delay( obj, func, args, time ) );
  30.     }
  31.    
  32.     public function start( Void ) : Void
  33.     {
  34.         for ( var i = 0; i < __delays.length; i++ )
  35.             __delays[ i ].start();
  36.     }
  37.    
  38.     public function reset( Void ) : Void
  39.     {
  40.         for ( var i = 0; i < __delays.length; i++ )
  41.  
  42.             __delays[ i ].kill();
  43.         __delays = [];
  44.     }
  45. }

braucht auch noch folgende klasse:

ActionScript:
  1. class com.nesium.utils.Delay
  2.     // v1.03
  3. {
  4.  
  5.     private var __obj            : Object;
  6.     private var __func         : Function;
  7.     private var __args         : Array;
  8.     private var __delay    : Number;
  9.     private var __intvl    : Number;
  10.    
  11.    
  12.     public function Delay( obj, func, args, delay )
  13.     {
  14.         if ( arguments.length == 3 )
  15.         {
  16.             __obj      = null;
  17.             __func  = obj;
  18.             __args  = func;
  19.             __delay = args;
  20.         }
  21.         else if ( arguments.length == 4 )
  22.         {
  23.             __obj   = obj;
  24.             __func  = obj[ func ];
  25.             __args  = args;
  26.             __delay = delay;
  27.         }
  28.     }
  29.    
  30.     public function start( Void ) : Void
  31.     {
  32.         __intvl = setInterval( this, "stopDelay", __delay );
  33.     }
  34.    
  35.     private function stopDelay( Void ) : Void
  36.     {
  37.         clearInterval( __intvl );
  38.         callback();
  39.     }
  40.    
  41.     private function callback( Void ) : Void
  42.     {
  43.         __func.apply( __obj, __args );
  44.     }
  45.    
  46.     public function kill( Void ) : Void
  47.     {
  48.         clearInterval( __intvl );
  49.     }
  50.    
  51.     public function setDelay( d : Number ) : Void
  52.     {
  53.         __delay = d;
  54.     }
  55. }

edit: ich hoffe mal, dass der code selbsterkärend ist, ansonsten sieht die anwendung in etwa so aus:

ActionScript:
  1. var seq = new Sequence();
  2. seq.addStep( this, "myfunc", [], 200 );
  3. seq.addStep( this, "myfunc", [], 400 );
  4. seq.start();

Geändert von nesium (01-12-2004 um 19:09 Uhr)
nesium ist offline   Mit Zitat antworten
Alt 01-12-2004, 19:12   #7 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
ansonsten kannste es auch mit na parameter übergabe lösen

PHP-Code:
tl this;
for (var 
1i<4i++) {
    
tl['t'+i] = setInterval(function (id) {
        
trace(id);
        
clearInterval(id);
    }, 
1000*ii);

das ganze kannste sogar noch coller machen ohne eine variable zu setzen

PHP-Code:
for (var 1i<4i++) {
    
setInterval(function (id) {
        
trace(id);
        
clearInterval(id);
    }, 
1000*ii);

nice

zur erklärung warum das so ist: i verändert sich bei jedem durchlauf und ist am ende dann 3 und somit wird immer nur das 3 interval gekillt. ist ein klassiker, kennt man aus dem scenario beim attachen von mc vielleicht noch

mfg
alex
__________________
TVNEXT Solutions

Geändert von atothek (01-12-2004 um 19:25 Uhr)
atothek ist offline   Mit Zitat antworten
Alt 02-12-2004, 10:07   #8 (permalink)
filmtip: snatch
 
Registriert seit: Oct 2001
Beiträge: 1.562
Hey atothek !!

sauber. Vielen Dank. Frage beantwortet und mehr.

thanks
__________________
netro.biz
Skyla 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:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele