mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 05:37 Benutzername: Passwort: Auto-Login

Thema: [Flash CS3] - Figur springen lassen vom 08.10.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> [Flash CS3] - Figur springen lassen
Seite: 1, 2  Weiter
Autor Nachricht
Anti78
Threadersteller

Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht: Männlich
Verfasst Mi 08.10.2008 10:21
Titel

[Flash CS3] - Figur springen lassen

Antworten mit Zitat Zum Seitenanfang

Hi Leute.

Ich will mir zur Zeit so ein bisschen Spiele Programmierung beibringen und habe deshalb die Tutorials auf http://www.dm.hs-ulm.de/showcase/steinmerz/ durchgemacht. Funktioniert auch soweit.
Nur eines würde ich gerne ändern. Und zwar, dass, wenn die Figur springen soll, man nicht lange auf der Space-Taste bleiben muss, sondern dass die Figur mit einer festen Höhe springt sobald man die Space-Taste drückt. Doch egal was ich probiere, es funktioniert nicht.

Auszug (Sprungcode)
Code:
sprungkraft = 0;
space_pressed = false;
max_sprung = 20;
gravitation = 1;
nullpunkt = y_pos;
absoluter_nullpunkt = nullpunkt;
t_springen = 20;
figur_springt = false;
x_faktor = 1;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
b_box_verschiebung = 6;


Code:
springen = function(){
   
   if(sprungkraft > 0 && !absprung_bool){
      absprung_bool = true;
      sequenz("absprung");
   }
   
   if(sprungkraft < 0 && !fallen_bool){
      fallen_bool = true;
      sequenz("fallen");
   }
   if((figur._y+50) > nullpunkt && sprung_kraft < 0 && !landen_bool){
      landen_bool = true;
      sequenz("landen");
   }

   x_faktor = 1+ sprungkraft/(max_sprung*3);
   sprungkraft -= gravitation;
   figur._y -= sprungkraft;

   
   if(figur._y > nullpunkt){
      x_faktor = 1;
      figur_springt = false;
      absprung_bool = false;
      fallen_bool = false;
      landen_bool = false;
      figur._y = nullpunkt;
      sprungkraft = 0;
      sprung_hoehe.text = sprungkraft;
      clearInterval(intervalID_springen);
   }
}




Wäre super wenn mir jemand helfen könnte.

Gruß
Andreas


Zuletzt bearbeitet von Anti78 am Mi 08.10.2008 10:27, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
phihochzwei
Moderator

Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht: Männlich
Verfasst Mi 08.10.2008 11:15
Titel

Antworten mit Zitat Zum Seitenanfang

Auszug bringt hier nicht viel, weil der Relevante Code fehlt Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
Anti78
Threadersteller

Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht: Männlich
Verfasst Mi 08.10.2008 11:25
Titel

Antworten mit Zitat Zum Seitenanfang

Wollte euch nicht mit dem Code erschlagen.

Hier ist er:

Code:
// Definitionsbereich
x_pos = 400;
y_pos = 400;
groesse = 15;
speed = 5;
speed_max = speed*3;
xpos_min = 10;
xpos_max = 800 - xpos_min;
bisherigeBewegung = "keineBewegung";

sprungkraft = 0;
space_pressed = false;
max_sprung = 20;
gravitation = 1;
nullpunkt = y_pos;
absoluter_nullpunkt = nullpunkt;
t_springen = 20;
figur_springt = false;
x_faktor = 1;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
b_box_verschiebung = 6;

anzahl_ebenen = 0;
ebenennummer = -1;
auf_ebene = new Array;
x_bereich = new Array;
plattform = new Array;
while(this["ebene_"+anzahl_ebenen] != undefined){
   auf_ebene[anzahl_ebenen] = false;
   x_bereich[anzahl_ebenen] = false;
   plattform[anzahl_ebenen] = new Array;
   plattform[anzahl_ebenen][0] = this["ebene_"+anzahl_ebenen]._x;
   plattform[anzahl_ebenen][1] = this["ebene_"+anzahl_ebenen]._y;
   plattform[anzahl_ebenen][2] = this["ebene_"+anzahl_ebenen]._width;
   anzahl_ebenen++;
}

createTextField("sprung_hoehe", 10, 20, 20, 20, 20);
sprung_hoehe.text = sprungkraft

// Programmierbereich
attachMovie("maennchen", "figur", 25);
figur._x = x_pos;
figur._y = y_pos;
figur._xscale = groesse;
figur._yscale = groesse;

sequenz = function(modus){
   if (modus != bisherigeBewegung) {
      figur.gotoAndPlay(modus);
      bisherigeBewegung = modus;
   }
}

kollision = function(){
    b_box = new Object;
    b_box = figur.getBounds(this);
   
    for(i = 0; i < anzahl_ebenen; i++){
      
       if(b_box.xMax > plattform[i][0] + b_box_verschiebung && b_box.xMin < (plattform[i][0] + plattform[i][2])- b_box_verschiebung){
         x_bereich[i] = true;
         if(b_box.yMax < plattform[i][1] && b_box.yMax > plattform[i][1]-65){
            nullpunkt = plattform[i][1] -65;
            ebenennummer = i;
            if(figur._y == plattform[i][1] - 65){
               auf_ebene[i] = true;
            }
         }
       }
       else{
          x_bereich[i] = false;
          if(auf_ebene[ebenennummer] && !x_bereich[ebenennummer]){
             nullpunkt = absoluter_nullpunkt;
             auf_ebene[ebenennummer] = false;
             x_bereich[ebenennummer] = false;
             ebenennummer = -1;
             if(!figur_springt){
               sprungkraft = 0;
               figur_springt = true;
               intervalID_springen = setInterval(springen, t_springen);
             }
          }
       }
    }
}

x_bewegung = function(ausrichtung, bewegung){
   figur._x += bewegung*x_faktor;
   figur._xscale = ausrichtung;
   if(figur._x < xpos_min || figur._x > xpos_max){
      figur._x -= bewegung*x_faktor;
   }
}

springen = function(){
   
   if(sprungkraft > 0 && !absprung_bool){
      absprung_bool = true;
      sequenz("absprung");
   }
   
   if(sprungkraft < 0 && !fallen_bool){
      fallen_bool = true;
      sequenz("fallen");
   }
   if((figur._y+50) > nullpunkt && sprung_kraft < 0 && !landen_bool){
      landen_bool = true;
      sequenz("landen");
   }

   x_faktor = 1+ sprungkraft/(max_sprung*3);
   sprungkraft -= gravitation;
   figur._y -= sprungkraft;

   
   if(figur._y > nullpunkt){
      x_faktor = 1;
      figur_springt = false;
      absprung_bool = false;
      fallen_bool = false;
      landen_bool = false;
      figur._y = nullpunkt;
      sprungkraft = 0;
      sprung_hoehe.text = sprungkraft;
      clearInterval(intervalID_springen);
   }
}

onEnterFrame = function(){
   
   kollision();
   
   if(Key.isDown(Key.CONTROL)){
      if(Key.isDown(Key.RIGHT)){
         x_bewegung(groesse, speed_max);
         if(!figur_springt){
            sequenz("rennen");
         }
      }
      if(Key.isDown(Key.LEFT)){
         x_bewegung(-groesse, -speed_max);
         if(!figur_springt){
            sequenz("rennen");
         }
      }      
   }
   else{
      if(Key.isDown(Key.RIGHT)){
         x_bewegung(groesse, speed);
         if(!figur_springt){
            sequenz("gehen");
         }
      }
      if(Key.isDown(Key.LEFT)){
         x_bewegung(-groesse, -speed);
         if(!figur_springt){
            sequenz("gehen");
         }
      }
   }
   if((!Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) && Key.isDown(Key.LEFT)) && !figur_springt){
      bisherigeBewegung = "keineBewegung";
      figur.gotoAndStop("gehen");
   }
   if(Key.isDown(Key.SPACE) && !figur_springt){
      space_pressed = true;
      if(sprungkraft < max_sprung){
         sprungkraft++;
         sprung_hoehe.text = sprungkraft;
      }
   }
   if(!Key.isDown(Key.SPACE) && space_pressed){
      space_pressed = false;
      figur_springt = true;
      intervalID_springen = setInterval(springen, t_springen);
   }
}
  View user's profile Private Nachricht senden
phihochzwei
Moderator

Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht: Männlich
Verfasst Mi 08.10.2008 11:45
Titel

Antworten mit Zitat Zum Seitenanfang

Versuch mal
Code:
// Definitionsbereich
x_pos = 400;
y_pos = 400;
groesse = 15;
speed = 5;
speed_max = speed*3;
xpos_min = 10;
xpos_max = 800 - xpos_min;
bisherigeBewegung = "keineBewegung";

sprungkraft = 0;
space_pressed = false;
max_sprung = 20;
gravitation = 1;
nullpunkt = y_pos;
absoluter_nullpunkt = nullpunkt;
t_springen = 20;
figur_springt = false;
x_faktor = 1;
absprung_bool = false;
fallen_bool = false;
landen_bool = false;
b_box_verschiebung = 6;

anzahl_ebenen = 0;
ebenennummer = -1;
auf_ebene = new Array;
x_bereich = new Array;
plattform = new Array;
while(this["ebene_"+anzahl_ebenen] != undefined){
   auf_ebene[anzahl_ebenen] = false;
   x_bereich[anzahl_ebenen] = false;
   plattform[anzahl_ebenen] = new Array;
   plattform[anzahl_ebenen][0] = this["ebene_"+anzahl_ebenen]._x;
   plattform[anzahl_ebenen][1] = this["ebene_"+anzahl_ebenen]._y;
   plattform[anzahl_ebenen][2] = this["ebene_"+anzahl_ebenen]._width;
   anzahl_ebenen++;
}

createTextField("sprung_hoehe", 10, 20, 20, 20, 20);
sprung_hoehe.text = sprungkraft

// Programmierbereich
attachMovie("maennchen", "figur", 25);
figur._x = x_pos;
figur._y = y_pos;
figur._xscale = groesse;
figur._yscale = groesse;

sequenz = function(modus){
   if (modus != bisherigeBewegung) {
      figur.gotoAndPlay(modus);
      bisherigeBewegung = modus;
   }
}

kollision = function(){
    b_box = new Object;
    b_box = figur.getBounds(this);
   
    for(i = 0; i < anzahl_ebenen; i++){
     
       if(b_box.xMax > plattform[i][0] + b_box_verschiebung && b_box.xMin < (plattform[i][0] + plattform[i][2])- b_box_verschiebung){
         x_bereich[i] = true;
         if(b_box.yMax < plattform[i][1] && b_box.yMax > plattform[i][1]-65){
            nullpunkt = plattform[i][1] -65;
            ebenennummer = i;
            if(figur._y == plattform[i][1] - 65){
               auf_ebene[i] = true;
            }
         }
       }
       else{
          x_bereich[i] = false;
          if(auf_ebene[ebenennummer] && !x_bereich[ebenennummer]){
             nullpunkt = absoluter_nullpunkt;
             auf_ebene[ebenennummer] = false;
             x_bereich[ebenennummer] = false;
             ebenennummer = -1;
             if(!figur_springt){
               sprungkraft = 0;
               figur_springt = true;
               intervalID_springen = setInterval(springen, t_springen);
             }
          }
       }
    }
}

x_bewegung = function(ausrichtung, bewegung){
   figur._x += bewegung*x_faktor;
   figur._xscale = ausrichtung;
   if(figur._x < xpos_min || figur._x > xpos_max){
      figur._x -= bewegung*x_faktor;
   }
}

springen = function(){
   
   if(sprungkraft > 0 && !absprung_bool){
      absprung_bool = true;
      sequenz("absprung");
   }
   
   if(sprungkraft < 0 && !fallen_bool){
      fallen_bool = true;
      sequenz("fallen");
   }
   if((figur._y+50) > nullpunkt && sprung_kraft < 0 && !landen_bool){
      landen_bool = true;
      sequenz("landen");
   }

   x_faktor = 1+ sprungkraft/(max_sprung*3);
   sprungkraft -= gravitation;
   figur._y -= sprungkraft;

   
   if(figur._y > nullpunkt){
      x_faktor = 1;
      figur_springt = false;
      absprung_bool = false;
      fallen_bool = false;
      landen_bool = false;
      figur._y = nullpunkt;
      sprungkraft = 0;
      sprung_hoehe.text = sprungkraft;
      clearInterval(intervalID_springen);
   }
}

onEnterFrame = function(){
   
   kollision();
   
   if(Key.isDown(Key.CONTROL)){
      if(Key.isDown(Key.RIGHT)){
         x_bewegung(groesse, speed_max);
         if(!figur_springt){
            sequenz("rennen");
         }
      }
      if(Key.isDown(Key.LEFT)){
         x_bewegung(-groesse, -speed_max);
         if(!figur_springt){
            sequenz("rennen");
         }
      }     
   }
   else{
      if(Key.isDown(Key.RIGHT)){
         x_bewegung(groesse, speed);
         if(!figur_springt){
            sequenz("gehen");
         }
      }
      if(Key.isDown(Key.LEFT)){
         x_bewegung(-groesse, -speed);
         if(!figur_springt){
            sequenz("gehen");
         }
      }
   }
   if((!Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) || Key.isDown(Key.RIGHT) && Key.isDown(Key.LEFT)) && !figur_springt){
      bisherigeBewegung = "keineBewegung";
      figur.gotoAndStop("gehen");
   }
   if(Key.isDown(Key.SPACE) && !figur_springt){
      space_pressed = true;
      sprungkraft = max_sprung;
      sprung_hoehe.text = sprungkraft;
   }
   if(!Key.isDown(Key.SPACE) && space_pressed){
      space_pressed = false;
      figur_springt = true;
      intervalID_springen = setInterval(springen, t_springen);
   }
}




Ansonsten wäre ne FLA super, dann kann ich auch Testen was ich hier mache Grins
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anti78
Threadersteller

Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht: Männlich
Verfasst Mi 08.10.2008 11:51
Titel

Antworten mit Zitat Zum Seitenanfang

Schaut schon gut aus. Lächel

Nur wenn man auf der Leertaste bleibt fliegt er unendlich nach oben. Und die Sprünge sind anscheinend immer noch unterschiedlich hoch. Kann es sein, dass du mit dem Code einfach die Intervallzeit wie schnell es hoch zählt, geändert hast? Ist auf jeden Fall schon um Längen besser als vorher.

Hier ist die FLA: Gezippt
  View user's profile Private Nachricht senden
Anti78
Threadersteller

Dabei seit: 16.09.2003
Ort: Tbb/Mz/M
Alter: 46
Geschlecht: Männlich
Verfasst Fr 10.10.2008 12:17
Titel

Antworten mit Zitat Zum Seitenanfang

Kann mir da noch jemand helfen? Wollte es am Wochenende fertig machen. Bitte. Menno!
  View user's profile Private Nachricht senden
phihochzwei
Moderator

Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht: Männlich
Verfasst Fr 10.10.2008 12:47
Titel

Antworten mit Zitat Zum Seitenanfang

heute nachmittag gerne, ich hab gerade nur hier im büro viel umme ohre
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
phihochzwei
Moderator

Dabei seit: 08.06.2006
Ort: Mülheim an der Ruhr
Alter: 46
Geschlecht: Männlich
Verfasst Sa 11.10.2008 18:34
Titel

Antworten mit Zitat Zum Seitenanfang

Also bei mir springt er nur einmal hoch, nix mit unendlich. Oder versteh ich nicht was du meinst.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Sprechende Flash-Figur gesucht
3D figur mit design überziehen
Suche diese Figur
Suche Figur für 80er-DVD-Sampler
suche 3D Figur für Webseite .. Bilder anbei
Im Iframe zu Anker springen
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.