{lang: 'de'}
Flashhilfe.de - Flash Community

setInterval funktioniert nicht [Flash 10]

 


AntwortenRegistrieren Seite1  

MartinL88#1
Benutzerbild von MartinL88
Beiträge: 23
Registriert: May 2010

25.02.2012, 18:08

Hallo,

ich habe wieder mal ein Problem.

Ich habe 2 Methoden die eigentlich das selbe machen. Daher wollte ich daraus eine Methode mit Parametern machen und diese in der setInterval aufrufen, aber es funktioniert nicht.

Was mache ich falsch?

Bin über jede hilfe dankbar.

Hier mal mein Code dazu:

var maxSpeed = 1;
var anzBalls = 2;
var anzKreis = 3;
var time = 10;

kreisGrossX = kreisGross._x;
kreisGrossY = kreisGross._y;
kreisGrossR = kreisGross._width/2;

var bBallAry = new Array();
var kBallAry = new Array();

fInit2();
fInit();

// mit parameter zum testen.
kLoop2 = setInterval(kLoop(anzKreis,kBallAry), time);

// ohne parameter zum testen.
fLoop1 = setInterval(fLoop, time);

stop();

// startwerte
function fInit() {
   for (i=0; i<anzBalls; i++) {
      vName = "ball"+i;
      vSym = "ball";
      _root.attachMovie(vSym,vName,_root.getNextHighestDepth());
      ballB = _root[vName];
      bBallAry.push(ballB);

      ballB.r = 20;
      ballB.speedX = -3;
      ballB.speedY = -3;

      d = ballB.r+ballB.r;
      ballB._x = d+i*50+120;
      ballB._y = d+i*50+150;
      ballB._width = d;
      ballB._height = d;
   }
}

// startwerte
function fInit2() {
   for (i=0; i<anzKreis; i++) {
      vName = "kreis"+i;
      vSym = "kreis";
      _root.attachMovie(vSym,vName,_root.getNextHighestDepth());
      kreisR = _root[vName];
      kBallAry.push(kreisR);

      kreisR.r = 20;
      kreisR.speedX = 3;
      kreisR.speedY = -3;

      d = kreisR.r+kreisR.r;
      kreisR._x = d+i*50+250;
      kreisR._y = d+i*50+150;
      kreisR._width = d;
      kreisR._height = d;
   }
}

// bewegung
function fLoop():Void {
   for (i=0; i<anzBalls; i++) {
      // test rand und ball move
      ballB = bBallAry[i];

      var distX:Number = ballB._x-kreisGross._x;
      var distY:Number = ballB._y-kreisGross._y;
      var dist:Number = Math.sqrt(distX*distX+distY*distY);
      var radius0 = ballB._width/2;
      var radius1 = kreisGross._width/2;
      if (dist<radius1-radius0) {
         ballB._x += ballB.speedX;
         ballB._y += ballB.speedY;
      }
      else {
         ballB.speedX = -ballB.speedX;
         ballB._x += ballB.speedX;
         ballB.speedY = -ballB.speedY;
         ballB._y += ballB.speedY;
      }
   }
}

// bewegung
function kLoop(anzb:Number, einArr:Array) {
   var anzbaelle:Number = anzb;
   var einArray:Array = einArr;
   
   for (i=0; i<anzbaelle; i++) {
      // test rand und ball move
      kreisR = einArray[i];

      var distX:Number = kreisR._x-kreisGross._x;
      var distY:Number = kreisR._y-kreisGross._y;
      var dist:Number = Math.sqrt(distX*distX+distY*distY);
      var radius0 = kreisR._width/2;
      var radius1 = kreisGross._width/2;
      if (dist<radius1-radius0) {
         kreisR._x += kreisR.speedX;
         kreisR._y += kreisR.speedY;
      }
      else {
         kreisR.speedX = -kreisR.speedX;
         kreisR._x += kreisR.speedX;
         kreisR.speedY = -kreisR.speedY;
         kreisR._y += kreisR.speedY;
      }
   }
}
Schlagwörter: Funktion, Parameter, setInterval
MartinL88#2
Benutzerbild von MartinL88
Beiträge: 23
Registriert: May 2010

Themenautor/in

25.02.2012, 20:05

ich habe es jetzt selber heraus gefunden wie es geht.

bei mir war die Syntax beim setInterval aufruf falsch.

es muss so heißen:

kLoop2 = setInterval(this,"kLoop", time, anzKreis, kBallAry);

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Ein Lob an die Admins [Flash CS5] 08.05.2022 - Indy_Crossover
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2024 Sebastian Wichmann - Flashhilfe.de