| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Sep 2003
Beiträge: 134
| Seltsamer Funktionsaufruf ?
Hallo! Ich habe folgendes Problem: Ich habe ein Funktion namens clump_about() : Code:
function clump_about()
{
...
...
} Code:
for (var i = 0; i < kNumberGuys; ++i)
{
...
mc.onEnterFrame = clump_about;
...
} Ich würde an die Funktion gerne einen Parameter weitergeben, nur wird die Funktion dann nicht mehr aufgerufen. Im übrigen wird die Funktion schon dann nicht aufgerufen wenn ich Code: mc.onEnterFrame = clump_about(); Viele Grüße, Wassim |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
mc.onEnterFrame = clump_about; so ist clump_about ein zeiger (variable) auf die funktion. jedes onEnterFrame verzweigt dann zu dieser adresse. mc.onEnterFrame = clump_about(); so ist clump_about eine funktion, die direkt einmal ausgeführt wird. onEnterFrame erhält das return-ergebnis (in diesem falle nichts) - und das macht onEnterFrame dann auch ;-) ----------------- "..Ich würde an die Funktion gerne einen Parameter weitergeben.." der funktionsaufrufer onEnterFrame vergibt keine parameter - deshalb kann/braucht deine funktion auch keine zu empfangen!
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (16-01-2006 um 18:19 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Sep 2003
Beiträge: 134
|
Danke für die schnelle Antwort! Und wieder was gelernt. Das Problem ist, dass in der Funktion clump_about() das Zentrum definiert wird zu dem alle Bälle hin wollen. Ich würde den Bällen aber allen unterschiedliche Punkte zuweisen zu denen sie fliegen. Sowas wie Code: var x=250; var y=350; mc.onEnterFrame = clump_about(x,y); Danke. Viele Grüße, Wassim |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
da gibt es wie immer viele möglichkeiten. z.b. Code: MovieClip.prototype.clump_about = function(x, y) {
this.x = x;
this.y = y;
this.onEnterFrame = function() {
trace(this+": "+x+" // "+y);
};
};
//
ball1.clump_about(100, 300);
ball2.clump_about(200, 300);
ball3.clump_about(300, 300);
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (17-01-2006 um 00:54 Uhr) |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Sep 2003
Beiträge: 134
|
Hallo! Danke für die Tipps! Beide Möglichkeiten sind möglich. Nur habe ich nun das Problem, dass die Bälle nicht mehr auf die Funktion clump_about() ansprechen sobald die Bälle total still stehen. Erst wenn ich sie per Dragging ein wenig bewege, dann erst sprechen Sie wieder an. Weiß jemand wie ich das Problem löse? Sie sollen sich IMMER abstoßen wenn sie sich zu nahe kommen. Vielen Dank! Gruß, Wassim |
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
| Code: // Attraction to center var dx = xaxis-this._x; var dy = yaxis-this._y; var dist = Math.sqrt(dx*dx+dy*dy); if (dist==0) dist=.1; // notlösung weight += kCenterWeight; var scale = kCenterWeight/dist; fx += dx*scale; fy += dy*scale; besser wäre freilich, wenn du beim aufprall die gegnerische kugel anstossen würdest (elastischer stoss).
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Sep 2003
Beiträge: 134
|
Zunächst einmal: DU BIST GENIAL!! Davon abgesehen: Werden die Kugeln nicht angestoßen bei meinem Beispiel? Ist das ein großer Aufwand? Oder kennst Du ein Tutorial das mir damit weiterhelfen würde? Ich meine, es funzt zwar ganz gut mit Deiner "Notlösung", aber das mit dem elastischen Stoß würde ich gerne ausprobieren. Vielen Dank nochmals! Gruß, Wassim |
| | |
| | #10 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..elastischen Stoß.." findest du in jeder billigen formelsammlung http://www.seibsprogrammladen.de/fra...allistik/flash nr.9
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Sep 2003
Beiträge: 134
|
Hallo! Ich habe mit diesem Beispiel ein letztes Problem bei dem ich seit einiger Zeit GAR nicht weiter weiß. Ihr könnt Euch unter diesem Link ansehen wie "weit" ich bei diesem Projekt bin. Jeder Ball steht für einen Datensatz aus der Datenbank. Wenn Ihr am Anfang beispielsweise die Werte Baujahr: 2000, Preis: 19000 und Leistung: 163 eingebt, seht ihr wie die Bälle sich zu ihren Positionen bewegen. Soweit so gut. Ihr könnt aber auch sehen dass einige Kugeln links oben um bestimmte Positionen kämpfen die nahe bei einander sind. Nun meine Frage: seht Ihr eine Möglichkeit wie ich es schaffe dass die Bälle alle stehenbleiben sobald a) die Regler losgelassen sind, und b) die Bälle ihre Positionen so gut wie möglich erreicht haben? Der Notfallplan den ich habe ist der folgende: Sobald ein Regler losgelassen wird, läuft ein Countdown runter, und dann friert alles ein... bis ein Regler betätigt wird. Das ist leider eine unschöne und wenig elegante Lösung. Hat jemand einen besseren Vorschlag? Wäre für jeden Vorschlag dankbar. Viele Grüße, Wassim PS: Ihr könnt die As. Datei runterladen. Da steht der Code zum Beispiel im Netz drin. |
| | |
| | #13 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
z.b. Code: if (globales_bewege_flag == true) {
if (Math.abs(this.vx)+Math.abs(this.vy)>1) {
this._x += this.vx;
this._y += this.vy;
}
}
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #15 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
du darfst auch ein bisschen mitdenken "..wie ich es schaffe dass die Bälle alle stehenbleiben sobald.." ..sobald irgend etwas globales_bewege_flag auf false setzt werden keine koordinaten mehr zugewiesen. deshalb bleiben alle bälle stehen. wird das flag, von wem auch immer (z.b. "..die Regler losgelassen sind.."), wieder auf true gesetzt, dann bewegen sich die bälle wieder. der name 'globales_bewege_flag' ist natürlich nur beispielhaft für eine variable, die global zugänglich ist.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |