setInterval funktioniert nicht [Flash 10]
| 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;
}
}
} | | | 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); | |
| Ähnliche Beiträge zum Thema | 13.09.2021 - Willisquirion 08.05.2022 - Indy_Crossover 28.07.2022 - TateBauch 13.09.2022 - Rennier |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News
Regeln & Bedingungen
|