Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-09-2003, 01:27   #1 (permalink)
Neuer User
 
Registriert seit: May 2003
Beiträge: 26
= oder ==?

Hallo allerseits!

Hier mal eine etwas komplizierte AS-Frage, zumindest für
einen Laien wie mich -

Ich möchte, dass ein "Raumschiff"-MC, wenn er den Punkt mit den Koordinaten x=300 und y=68 erreicht, einen "Feuerball"-MC in gerader Linie in Richtung eines "Spielfigur"-MC schickt.

Für den "Raumschiff"-MC hab ich folgendes AS:

onClipEvent (enterFrame) {
this._x -= 5;
if (this._x = 300) {
_root.feuerballmc._x=300;
_root.feuerballmc._y=68;
}
}

Das Problem ist, es klappt nicht. Ich hab ein neues file aufgemacht und es da getestet, in meinem Ursprungsfile allerdings funkioniert es nicht.

Dann weiss ich nicht, welches AS ich nun dem "Feuerball"-MC geben soll, der ja ab dem Punkt (300 I 68) auf die Spielfigur zurasen soll.

So etwas vielleicht:
onClipEvent (enter Frame) {
this._y += ((_root.spielfigurmc._x - this._x)/10)
this._x .... und weiter weiss ich nicht ^_^°

Wäre nett, wenn mir einer von Euch helfen könnte....
Visual_Noize ist offline   Mit Zitat antworten
Alt 22-09-2003, 06:23   #2 (permalink)
Genius
 
Benutzerbild von f@gju
 
Registriert seit: Sep 2003
Ort: Banned into Jail
Beiträge: 650
hallo dir

so kannste das lösen:

ActionScript:
  1. var xDistance = _root.mcBall._x - _root.mcFigur._x;
  2. var yDistance = _root.mcBall._y - _root.mcFigur._y;
  3. var xStep = xDistance / 10;
  4. var yStep = yDistance / 10;
  5.  
  6. intID = setInterval(yay, 50);
  7. function yay(){
  8.     _root.mcBall._x -= xStep;
  9.     _root.mcBall._y -= yStep;
  10.     if(_root.mcBall.hitTest(_root.mcFigur)){
  11.         clearInterval(intID);                  
  12.     }
  13. }

n beispiel is angehängt
Angehängte Dateien
Dateityp: zip niggah.zip (2,5 KB, 5x aufgerufen)
__________________
Klick hier
f@gju ist offline   Mit Zitat antworten
Alt 22-09-2003, 10:57   #3 (permalink)
doofer Nickname...
 
Benutzerbild von Axel Sartorius
 
Registriert seit: Jul 2001
Ort: Dortmund
Beiträge: 2.337
ActionScript:
  1. onClipEvent (enterFrame) {
  2. this._x -= 5;
  3. if (this._x = 300) { // <-- Hier liegt Dein Fehler!
  4. // so ist's korrekt: if (this._x == 300){
  5. _root.feuerballmc._x=300;
  6. _root.feuerballmc._y=68;
  7. }
  8. }
Du verwendest in Deiner If-Abfrage den Zuweisungsoperator, d.h. anstatt in deiner Eingangsbedingung abzufragen ob this._x gleich 300 ist, sagst Du: this._x ist 300. Siehst Du den Unterschied?
In If-Abfragen musst Du immer mit dem Vergleichsoperator arbeiten.

Also:
Zuweisungsoperator: " = "
Vergleichsoperator: " == "

Allerdings: In diesem speziellen Fall könnte es allerdings trotzdem nicht funzen, da sich Dein Objekt mit 5 pixel pro Frame auf der x-achse bewegt. Und die if-Bedingung ist ja nur dann erfüllt, wenn der _x-Wert exakt 300 annimmt. Und das ist sie nicht, wenn der _x-Wert 299.9 oder 300.1 ist. Da würde ich Dir eher ein <= oder >= empfehlen!
__________________
Q:What happens if we nuke Great Cthulhu?
A: He reforms 20 Minutes later - but now he's RADIOACTIVE!

Geändert von Axel Sartorius (22-09-2003 um 11:02 Uhr)
Axel Sartorius ist offline   Mit Zitat antworten
Alt 22-09-2003, 12:26   #4 (permalink)
Neuer User
 
Registriert seit: May 2003
Beiträge: 26
Danke Euch beiden!

Das mit der if-Bedingung hat wirklich gestimmt.
Der Feuerball düst also vorschriftsgemäss los,
allerdings folgt er dann dem SpielfigurMC, anstatt
in einer geraden Linie in seine Richtung zu sausen.

(Die Spielfigur kann man nach links/rechts bewegen,
der Feuerball soll allerdings nur die momentane x-Position
anvisieren, damit man noch ausweichen kann...)

Wie kriegt man sowas hin?
Visual_Noize ist offline   Mit Zitat antworten
Alt 23-09-2003, 10:31   #5 (permalink)
doofer Nickname...
 
Benutzerbild von Axel Sartorius
 
Registriert seit: Jul 2001
Ort: Dortmund
Beiträge: 2.337
Du musst nur in dem Augenblick wo der Feuerball ausgelöst wird die x_position der Spielfigur speichern.

Also etwa in diesem Stil:
ActionScript:
  1. //Weise die x-Position des Spielers der Variablen target_x zu:
  2. target_x = player._x;
Wichtig ist natürlich, das die x-Position nur einmal - und zwar in dem Moment des Feuerball-Auslösens - gespeichert wird. Diese Zuweisung darf z.B. nicht innerhalb einer onEnterFrame oder anderen Schleife erfolgen, da die x_position sonst andauernd aktualisiert werden würde! Sie soll immer nur dann auf den neuesten Stand gebracht werden, wenn der Feuerball abgefeuert wird.
__________________
Q:What happens if we nuke Great Cthulhu?
A: He reforms 20 Minutes later - but now he's RADIOACTIVE!
Axel Sartorius 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 23:08 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele