Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-08-2005, 16:00   #1 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
tutorial feder

hi
wer hat ein tutorial oden ein script oder einen ansatz, wie man einen tween schreibe der sich wie ein ball an einer feder verhält. Also ich lass das ding los es geht nach unten- federt wieder ein stück nach oben- fällt nach unten -wieder ein kleineres stück nach oben usw bis es stopt????
trossen ist offline   Mit Zitat antworten
Alt 23-08-2005, 16:03   #2 (permalink)
muh ;)
 
Registriert seit: Jan 2005
Beiträge: 89
Hallo

Such hier am besten mal nach "easing", da solltest Du einiges finden
Seventy6 ist offline   Mit Zitat antworten
Alt 23-08-2005, 16:22   #3 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
du meinst warscheinlich mit easingIn easingOut und so !
das kenn ich.
geht das nicht einfach auch als funktion die ich mir dann auch als prototype schreiben kann ??
trossen ist offline   Mit Zitat antworten
Alt 23-08-2005, 16:33   #4 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
ein busschen physik brauchst du!
die feder hat eiune bestimmte länge.
je länger sie ist desto mehr kraft lässt sie auf den ball wirken.
je mehr kraft auf den ball wirkt desto schneller beschleunigt er (a=F/m)
also ist die beschleunigung abhängig von der federlänge.

a = l*federFaktor

die geschwindigkeit ist das Zeitintegral der Beschleunigung, vereinfachte numerische Itegrationsmethode:

v = v+a*dt

dt ist die vergangene Zeit
das selbe für die position: wer weg ist das zeitintegral der geschwindigkeit

x = x+v*dt

wenn man nun für dt 1 nimmt, und x/y koordinaten berechnet, kommt so ein script raus:

ActionScript:
  1. vx = 0;
  2. vy = 0;
  3. this.onEnterFrame = function(){
  4. lx = _xmouse - b._x; //Federlänge
  5. ly = _ymouse - b._y;
  6. vx += lx*0.1; //Beschleunigung integrieren
  7. vy += ly*0.1;
  8. b._x += vx; //Geschwindigkeit integrieren
  9. b._y += vy;
  10. vx *= 0.95; //Dämpfung
  11. vy *= 0.95;
  12. }
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 23-08-2005, 17:21   #5 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
was willst du denn da mit _xmous
das ding soll doch nur ein tween sein das hat doch nix mit der maus zu zun
trossen ist offline   Mit Zitat antworten
Alt 23-08-2005, 17:48   #6 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
Hilfeeeeeeeeeeee????

wie wendet man den so was an
PHP-Code:
Math.easeInElastic = function (tbcdap) {
    if (
t==0) return b;  if ((t/=d)==1) return b+c;  if (!pp=d*.3;
    if (
Math.abs(c)) { a=c; var s=p/4; }
    else var 
p/(2*Math.PI) * Math.asin (c/a);
    return -(
a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/)) + b;
}; 
ich muß ja irgend wie der function die parameter t, b, c, d, a, p übergeben und das geht ja nicht so
PHP-Code:
Math.easeInElastic (10,2,5,6,9,5
wer kann mir helfen das zu einem einfache tween zu schreiben der losgeht sobald ich die funktion aufrufe und mit dem aufruf die parameter übergebe????
trossen ist offline   Mit Zitat antworten
Alt 23-08-2005, 18:16   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
mit einem tween geht das nicht!!!
ein tween macht immer nur die selbe bewegung.
du musst das programmieren.
beispiel dazu hast du bekommen - und den helfer erfolgreich beleidigt :-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-08-2005, 18:26   #8 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
lieber beleidigter helfer
wenn sie meine blödheit beleidigt tut mir das auch leid
ich verstehe funktionen aber das geht anders ich bekomms einfach nich zusammen
trossen ist offline   Mit Zitat antworten
Alt 23-08-2005, 18:33   #9 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
Alphanimal ist bestimmt nicht wirklich beleidigt ;-)

schau vielleicht mal auf seine homepage:
http://www.teamcraft.at/flashworx/

rechts mitte:
Beispiele für Noobs
Physik
anklicken

und da
1. Einfache Feder
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 23-08-2005, 18:33   #10 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
die mausposition hab ich nur als beispiel genommen.
du kannst jede position einsetzen... wo der MC halt hin "tweenen" soll
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 23-08-2005, 21:44   #11 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
ich hab das jetzt so gemacht
PHP-Code:
MovieClip.prototype.Gummi = function(laengemd) {
vx 0;

this.onEnterFrame = function(){

    
//Je größer Abstand, desto mehr Kraft
    
Fx laenge this._x;
    
//Kraft Fx wirkt sich auf die Geschwindigkeit aus (über Beschleunigung)
    // Beschleuniung vx = Kraft Fx /Masse m

    
vx += Fx/m;
    
//Dämpfung verringert Geschwindigkeit   (Dämpf = 0...1)
    // NeueGesch = AlteGesch*Dämpf
    
vx *= d;
    
trace("vx ist " vx)
    
//Geschwindigkeit wirkt sich auf die Position aus
    // NeuePos = AltePos + Gesch
    
this._x += vx;
    
trace("this._x ist " this._x);
    if(
vx 0.033 && vx 0.0098){
        
delete this.onEnterFrame
    
}
    
}
}
kreis.Gummi(100,50,0.9);
ball.Gummi(200,50,0.9); 
das problem is nur das mein MC ball nicht richtig hüpfen will
ich vermute es liegt an der gemeinsamen variablen vx oder
ich denke man müsste sie dynamisch erzeugen oder??
Angehängte Dateien
Dateityp: rar Physik 1_feder2.rar (4,6 KB, 17x aufgerufen)
trossen ist offline   Mit Zitat antworten
Alt 23-08-2005, 22:31   #12 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ActionScript:
  1. MovieClip.prototype.Gummi = function(laenge, m, d) {
  2.     this.vx = 0;
  3.     this.laenge = laenge;
  4.     this.m = m;
  5.     this.d = d;
  6.     this.onEnterFrame = function() {
  7.         var Fx = this.laenge-this._x;
  8.         this.vx += Fx/this.m;
  9.         this.vx *= this.d;
  10.         this._x += this.vx;
  11.         if (Math.abs(vx)<0.1) {
  12.             delete this.onEnterFrame;
  13.         }
  14.     };
  15. };
  16. kreis.Gummi(100, 70, 0.96);
  17. ball.Gummi(200, 50, 0.92);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 24-08-2005, 11:17   #13 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
danke danke werde mir das heute abend mal zu gemüte führen
trossen ist offline   Mit Zitat antworten
Alt 25-08-2005, 11:20   #14 (permalink)
Neuer User
 
Benutzerbild von trossen
 
Registriert seit: Jan 2005
Beiträge: 169
soderle das mit dem federn hab ich geraft.
bei mir funst das Script so
PHP-Code:
MovieClip.prototype.elastic = function(zielXmd){
    
    
vx 0;
    
this.zielX zielX;
    
this.m;
    
this.d;
    
this.onEnterFrame = function(){
        
trace(this._x);
        var 
Fx this.zielX this._x;//ermitteln des ferderwegs
        
vx += Fx/this.m;// Beschleuniung vx = Kraft Fx /Masse m
        
vx *= this.d;//Dämpfung verringert Geschwindigkeit   (Dämpf = 0...1)
                     // NeueGesch = AlteGesch*Dämpf
        
this._x += vx;
        
    }
}
kreis.elastic(200700.91); 
so funst es aber ich kann nicht mehrere MC ansprechen!!!!
ich denke ich muß den wert vx in einem array immer zwichenspeichern
und das hab ich mir so gedacht
aber auch nur gedacht weil es funst nicht
PHP-Code:
MovieClip.prototype.elastic = function(zielXmdMCnummer){
    
    
vx 0;
    
this.zielX zielX;
    
this.m;
    
this.d;
    
this.onEnterFrame = function(){
        
trace(this._x);
        var 
Fx this.zielX this._x;//ermitteln des ferderwegs
        
beschleunigung "beschleunigung"+MCnummer;   //<----------------------------------
        
trace(beschleunigung);                               //                           |
        
var beschleunigung  = [vx += Fx/this.m];// Beschleuniung vx = Kraft Fx /Masse m   |
        // denn wert vx, muß für jeden aufruf des prototypen einzeln gespeichert werden   |
        //dazu muss ich immer einen anderen array namen haben. das denke ich geht so-------
        
var beschleunigung2 beschleunigung[0];// hier lese ich denn wert des array´s aus 
        // und teile ihn der variablen "beschleunigung2" zu. Das mach ich um eine zahl zu haben 
        // mit der ich die dämpfung berechnen kann
        
var beschleunigung = [beschleunigung2*this.d];//Dämpfung verringert Geschwindigkeit   (Dämpf = 0...1)
                     // NeueGesch = AlteGesch*Dämpf
        
this._x += vx;
        
    }
}
ball.elastic(200700.92MC1); 
ich hab noch keine wilkliche ahnung von arrays aber auch das kommt noch
ihr habt bestimmt ne idee
gruß an alle
trossen ist offline   Mit Zitat antworten
Alt 25-08-2005, 23:33   #15 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
auch eine leistung.

du hast 'laenge' durch 'zielX' ersetzt (naja)

und anstatt 'this.vx' schreibst du 'vx'
und wunderst dich, das es nicht mehr geht.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (25-08-2005 um 23:35 Uhr)
hgseib 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 07:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele