• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > Spielkonzepte und Spieleprogrammierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-04-2006, 08:57   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Hamm in NRW
Beiträge: 45
wie bewege ich pixel für pixel eine figur so das sie sich insgesamt 20 pixel bewegt

hallo,
ich habe folgendes problemm:

ich möchte wenn ich auf die rechte peiltaste drücke, meine spielfigur sich um 20 pixel nach rechts bewegt. aber nicht auf einmal, sonder pixel für pixel bis sie an den 20 angekommen ist.

wer könnte mir da einen tip geben

danke im vorraus
spiki
__________________
Ich mache immer das was ich will, ob das immer richtig ist nezweifle ich !!!
spiki24 ist offline   Mit Zitat antworten
Alt 02-04-2006, 10:06   #2 (permalink)
\x3a\x6f\x29
 
Benutzerbild von [je]
 
Registriert seit: Apr 2004
Ort: paris
Beiträge: 806
Das kommt drauf an, wie schnell sich deine Figur die 20 Pixel bewegen soll.

Für gewöhnlich berechnet man eine Velocity, welche die Bewegung angibt. In Flash kann man diese Bewegung dann wunderbar auf n Frames verteilen. Als Beispiel: p0 mit (100|0) bewegt zu p1 mit (200|0) dann wäre vx = 200 - 100 also vx = 100. Rechnet man p0x + 100 erhält man 200.

Das wäre aber der Sprung bei einer Frame. Das ganze kann man auf mehrere Verteilen. Dazu teilst du den Wert durch die Anzahl der Frames, die die Animation laufen soll. Also (200 - 100)/10 für 10 frames. Dann rechnest du 10 Frames lang p0x += vx und beim 10ten Frame wird p0x = p1x sein.

ActionScript:
  1. var frames: Number = 10;
  2. var vx: Number = (x1 - x0)/frames;
  3. var vy: Number = (y1 - y0)/frames;

Dann in jedem Frame diesen Code ausführen

ActionScript:
  1. if ( frames-- > 0 )
  2. {
  3.   clip._x += vx;
  4.   clip._y += vy;
  5. }

Ist nur ein kleines Beispiel.
Hier habe ich onch einen Uralt-Code für so etwas rumfliegen.
http://je2050.de/highlight.php?file=...e/old/tween.as

(MovieClip.prototype.tweenTo, der Rest ist unwichtig)
__________________
joa ebert
http://blog.joa-ebert.com/ - http://www.joa-ebert.com/
[je] ist offline   Mit Zitat antworten
Alt 02-04-2006, 12:31   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Hamm in NRW
Beiträge: 45
wer kann helfen

gibt es da nicht eine einfache formel die ich mir auf der instanz meiner spielfigur lege.


onClipEvent (enterFrame) {if (Key.isDown(Key.RIGHT)) { HIER EINE FORMEL




}
}
__________________
Ich mache immer das was ich will, ob das immer richtig ist nezweifle ich !!!
spiki24 ist offline   Mit Zitat antworten
Alt 02-04-2006, 15:13   #4 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
PHP-Code:
pixel 0;
this.onEnterFrame = function() {
  if (
pixel 20) {
    
deineFigur._x++;
  } else {
    
delete this.onEnterFrame;
  }
    
pixel++;

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 02-04-2006, 16:13   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2003
Ort: Hamm in NRW
Beiträge: 45
der code funktioniert leider nur einmal

ich habe mir auf meiner spielfigur-instanz folgenden code gelegt.

onClipEvent (enterFrame) {
if (Key.isDown(Key.RIGHT)) {
this.gotoAndStop(2);
}
}
onClipEvent (enterFrame) {
if (Key.isDown(Key.LEFT)) {
this.gotoAndStop(3);
}
}

und auf der zeitleiste der spielfigur-instanz folgenden code gelegt
bild1) stop;
bild2) pixel = 0;
this.onEnterFrame = function() {
if (pixel<20) {
this._x = this._x+2;
} else {
delete this.onEnterFrame;
}
pixel++;
};
stop();
bild3)pixel = 0;
this.onEnterFrame = function() {
if (pixel<20) {
this._x = this._x-2;
} else {
delete this.onEnterFrame;
}
pixel++;
};
stop();
wenn ich aber ein 2. mal auf die taste rechts drücke passiert nichts mehr.

wo liegt hier der hacken
__________________
Ich mache immer das was ich will, ob das immer richtig ist nezweifle ich !!!
spiki24 ist offline   Mit Zitat antworten
Alt 04-04-2006, 20:42   #6 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Dein Fehler war das du ja nachdem einmal Rechts gedrückt der MC angehalten wurde du musst also eine Schleife machen hier mal der code:

dein_mc:

Bild1)
ActionScript:
  1. stop();

Bild2)
ActionScript:
  1. pixel = 0;
  2. this.onEnterFrame = function() {
  3. if (pixel<20) {
  4. this._x = this._x+2;
  5. } else {
  6. delete this.onEnterFrame;
  7. }
  8. pixel++;
  9. };
  10. gotoAndPlay(1); // damit er wieder zu bild 1 geht und somit die function wieder ausgeführt wird
  11.  

Bild3)
ActionScript:
  1. pixel = 0;
  2. this.onEnterFrame = function() {
  3. if (pixel<20) {
  4. this._x = this._x-2;
  5. } else {
  6. delete this.onEnterFrame;
  7. }
  8. pixel++;
  9. };
  10. gotoAndPlay(1); // damit er wieder zu bild 1 geht und somit die function wieder ausgeführt wird
  11.  

Geändert von _crypto_ (04-04-2006 um 20:48 Uhr)
_crypto_ 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 05:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele