Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-09-2004, 00:06   #1 (permalink)
Neuer User
 
Benutzerbild von Ricewind
 
Registriert seit: May 2004
Ort: Wien
Beiträge: 13
Bewegungs Animation

Folgendes Problem

Wenn ich versuche Die Figur Abwärts zu bewegen
Wird zwar das Bild nur einmal abgespielt, aber nicht wie gewünscht so lange wiederholt bis ich die Taste loslasse.

wenn ich nur den Befehl Play verwende darf ich keine Ort angaben machen
zb play("Vorne"
Wenn ich aber den Befehl gotoAndPlay("Vorne" verwende, Spielt er mir die zehne nur einmal ab, also keine Animation.

ok das ist der Befehl für die Figur

Zitat:
onClipEvent(enterFrame)
{
if(Key.isDown(Key.DOWN))
{
this._xscale += 1;
this._yscale += 1;
this.gotoAndPlay("Vorne");
_y +=3;
}
else if(Key.isDown(Key.UP))
{
this._xscale -= 1;
this._yscale -= 1;
this.gotoAndPlay("Hinten");
_y -=3;
}
}
ICh will also das Die Figur eine Animation immer wiederholt bis ich die Taste loslasse

Andabei habe ich die Fla dazugelegt

Hoffentlich mag mir wer helfen,
Liebe Grüße
Georg
Angehängte Dateien
Dateityp: zip mäxchen.zip (33,1 KB, 15x aufgerufen)
Ricewind ist offline   Mit Zitat antworten
Alt 26-09-2004, 02:29   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das ist ein sehr schönes Beispiel - dafür, wie man es nicht machen sollte...

Und zwar sowohl das Script als auch deinen Post. Du musst dir vorstellen, dass hier Leute vor dem Rechner sitzen, die dein Problem nicht kennen und denen solltest du das schon so rüberbringen, dass es auch verständlich ist

Um überhaupt eine vernünftige Übersicht über dein Script und deine Animationen zu haben, solltest du mehrere Ebenen einrichten: eine Ebene bekommt nur die Bildmarkierungen, eine Ebene bekommt die Scripte und weitere Ebenen bekommen Grafikobjekte und Animationen.

Dann ist es weiterhin übersichtlicher, wenn man Ereignisfunktionen nutzt, die man in Schlüsselframes ablegen kann, also keine onClip-Events. Diese haben immer den Nachteil, dass man sie nur auf die Objekte legen kann. Wenn man dann viele Objekte in einem Script hat und etwas ändern muss, ist man ständig nur am Suchen nach den Scripten.

Weiterhin willst du, dass auf Tastendruck eine kontinuierliche Aktion stattfindet. Die kann entweder über einen onClipEvent(enterFrame), einen MC-Enterframe oder einen setInterval erreicht werden. Wenn du jetzt aber kontinuierlich einen play-Befehl ausführst, wird der je nach Framerate mehrere Male in der Sekunde ausgeführt und überschreibt womöglich eine Animation, die sich über mehrere Frames erstreckt.

Ich hab dir mal einen Ansatz attacht. Ist noch nicht ganz fertig aber ausbaufähig...
Angehängte Dateien
Dateityp: zip mäxchen.zip (19,3 KB, 10x aufgerufen)
  Mit Zitat antworten
Alt 26-09-2004, 07:55   #3 (permalink)
Neuer User
 
Benutzerbild von Ricewind
 
Registriert seit: May 2004
Ort: Wien
Beiträge: 13
Danke dir, schau es mir gleich an.
Wegen der Rüge:

Das Beschreiben meines Problems - ich tu mir da schwer.

Wegen der Ebenen und Übersicht, ich werde daran Arbeiten.

Gar nicht so einfach das Ganze.

Edit:

So habe mir deine Veränderungen angeschaut und auch gleich einen kleinen Fehler gefunden(freu) war n Punkt der gefehlt hat bei

_
Zitat:
level0.MCmax_y +=3;
_level0.MCmax._y +=3;

Falls es Absicht war, fand ich es ok so habe ich mich mit dem Script beschäftigen müßen.

Ich verstehe zwar noch nicht alles, wieso und warum etwas gemacht wurde, aber ich hänge mich dahinter.

Geändert von Ricewind (26-09-2004 um 15:05 Uhr)
Ricewind ist offline   Mit Zitat antworten
Alt 26-09-2004, 16:07   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Der fehlende Punkt war natürlich keine Absicht...
  Mit Zitat antworten
Alt 26-09-2004, 18:28   #5 (permalink)
Neuer User
 
Benutzerbild von Ricewind
 
Registriert seit: May 2004
Ort: Wien
Beiträge: 13
Habe jetzt das Programm fertiggestellt, leider tritt ein seltsammer Fehler auf, den ich mir nicht erklären kann.

Wenn ich die Tasten schnell wechsle (rauf runter links recht), dann friert die Figur in der Bewegung ein, sie schaut im Extremfall nur mehr nach rechts, obwohl ich die Figur weiterhin nach links oder rechts etc. steuern kann.

Wäre toll wenn mir wer erklären kann, was ich da wieder falsch gemacht habe.

Anbei die Fla

Ich hoffe das ich diesmal das Programm ordentlich und übersichtlich gestalltet habe.
Angehängte Dateien
Dateityp: zip mäxchen2.zip (37,2 KB, 18x aufgerufen)
Ricewind ist offline   Mit Zitat antworten
Alt 26-09-2004, 21:45   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
was ich da wieder falsch gemacht habe
Du hast einen zu langsamen Rechner Nein, ganz im Ernst, das ist u.a. von der Rechnerleistung abhängig, wie schnell der Player umschaltet. Sicherheitshalber solltest du zu den Tastaturabfragen auch Zwischenvariablen setzen, aber bringen wird das auch nicht allzuviel Performance.
  Mit Zitat antworten
Alt 27-09-2004, 00:15   #7 (permalink)
Neuer User
 
Benutzerbild von Ricewind
 
Registriert seit: May 2004
Ort: Wien
Beiträge: 13
Bin jetzt total erstaund.
Zu langsam?
Habe einen 1400 und einen 1800 mH zu hause Stehen.

Das ich mit Flash einen PC in die Knie Zwingen kann, konnte ich mir gar nicht vorstellen, bis jetzt.

Zwischenvariablen?
Wie kann ich das bewergstelligen?
Sory das ich jetzt blöde frage, habe mich gerade gefreut das ich das ding halbwechs zum laufen gebracht habe.

Liebe grüße
Georg
Ricewind ist offline   Mit Zitat antworten
Alt 27-09-2004, 01:26   #8 (permalink)
Ehrenwort!!!
 
Benutzerbild von Barschel2004
 
Registriert seit: Feb 2004
Ort: Duisburg-Duissern
Beiträge: 1.114
gebe deine werte einfach via "trace" aus...
__________________
"A man on the move... And just sick enough to be totally confident..."

Alphaflight
Ein Tag wie jeder!
Flashversionen von einigen C64-Zocks
Barschel2004 ist offline   Mit Zitat antworten
Alt 27-09-2004, 01:29   #9 (permalink)
Ehrenwort!!!
 
Benutzerbild von Barschel2004
 
Registriert seit: Feb 2004
Ort: Duisburg-Duissern
Beiträge: 1.114
shit.. falsch verstanden... sorry... ist ja auch schon spät...
morgen (!?) wieder...
__________________
"A man on the move... And just sick enough to be totally confident..."

Alphaflight
Ein Tag wie jeder!
Flashversionen von einigen C64-Zocks
Barschel2004 ist offline   Mit Zitat antworten
Alt 27-09-2004, 12:04   #10 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Zwischenvariablen?
In den events Variablen auf true/false setzen und darauf abprüfen.
  Mit Zitat antworten
Alt 27-09-2004, 14:36   #11 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
hi

trifft sich gut, ich hab ihn zukunft auch sowas ähnliches vor.
Das hängenbleiben hat glaub ich nur bedingt was mit der Geschwindigkeit
des Pcs zu tun, vielmehr bleibt in der Version von agedoubleju die Variablen hängen, unter gewissen Umständen bleiben sie einfach auf false, warum kann ich mir auch nicht erklären.
Ich habe also das ganze dann doch auf meine Art mit einem onEnterFrame gelegt und
voila .. das gleiche Problem.
Ich habs dann doch noch gelöst und eine erneuete Abfrage in jedem Animationszyklus eingebaut, jetzt funkts auf jeden Fall, ist aber Codemäßig
sicher noch verbesserungswürdig.
Angehängte Dateien
Dateityp: rar mäxchen2.rar (22,1 KB, 8x aufgerufen)
Clemenses ist offline   Mit Zitat antworten
Alt 27-09-2004, 15:53   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Hmm, was du anders gemacht hast, ist nur der enterFrame statt des KeyListeners. Kann natürlich auch sein, dass die Listener-Funktion zu langsam ist und ein EnterFrame schneller. Vielleicht sollte man das ganze sogar über einen setInterval testen, der kann pro Sekunde noch öfter abgefragt werden als ein enterFrame...
  Mit Zitat antworten
Alt 27-09-2004, 15:59   #13 (permalink)
neuling
 
Registriert seit: Aug 2004
Beiträge: 198
na es ist auch so, daß es in jedem Animationszyklus einmal kontrolliert wird,
falls der Fehler auftriff (den ich mir bei beiden Scripts nicht erklären kann)wird er im nächsten Zyklus ausgebessert.
OnEnterFrame ist mir halt lieber, vorallem weil ich das ganze irgendwann mal
komplexer machen will mit Kollisionsabfrage, Drift, Springen etc.....

mfg
Clemens
Clemenses ist offline   Mit Zitat antworten
Alt 27-09-2004, 22:05   #14 (permalink)
Neuer User
 
Benutzerbild von Ricewind
 
Registriert seit: May 2004
Ort: Wien
Beiträge: 13
Habe mir das Programm nochmals angeschaut.
Leider wird die Animation nicht beendet sobald man die Tastatur losläst.

Wusste gar nicht das bestimmte Befehle von Flash unterschiedlich verarbeitet werden, wass ich wusste ist das jeder Programmierer einen anderen Weg zum Ziel hat.

Leider ist die Hilfsdatei von Flash nicht gerade auskunftfreudig, ich habe zwar einige Bücher von AS besorgt, von Kannengießer der mir das Forum empfohlen hat, Galileo die sind aber eher noch für Anfänger so wie ich einer bin.

Mal schaun, vieleicht schaffe ich irgentwann den Sprung.

Geändert von Ricewind (27-09-2004 um 22:12 Uhr)
Ricewind ist offline   Mit Zitat antworten
Alt 30-09-2004, 22:40   #15 (permalink)
Neuer User
 
Benutzerbild von Ricewind
 
Registriert seit: May 2004
Ort: Wien
Beiträge: 13
Habe jetzt eine Möglichkeit gefunden das dass ganze doch noch Funktioniert.

Schaut bitte noch mal das Programm an, ob es so sinnvoll ist, oder ob man es programmiertechnisch besser gestallten könnte.

So ganz habe ich zwar nicht verstanden wieso es überhaupt läuft? Aber ich hatte eine Eingebung.

Der Code

Zitat:
richtungb = "irgendwas";
MCmax.onEnterFrame = function() {
//Bewegung hinunter
if (Key.isDown(Key.DOWN))
{
richtung = "v";
_level0.MCmax._xscale += 1.5;
_level0.MCmax._yscale += 1.5;
_level0.MCmax._y += 3;
}

//Stop Befehl damit Mäxchen reichtig reagiert!!!
else if (!Key.isDown(Key.UP))
{
richtung = "m";
}

//Bewegung hinauf
if (Key.isDown(Key.UP))
{
richtung = "h";
_level0.MCmax._xscale -= 1.5;
_level0.MCmax._yscale -= 1.5;
_level0.MCmax._y -= 3;
}

//Bewegung nach Links
if (Key.isDown(Key.LEFT))
{
richtung = "l";
_level0.MCmax._x -= 3;
}

//Bewegung rechts
if (Key.isDown(Key.RIGHT))
{
richtung = "r";
_level0.MCmax._x += 3
}

//Figur in die richtige Richtung drehen
if ( richtung != _root.richtungc )
{
richtungc = richtung;
if (richtung == "v") {_level0.MCmax.gotoAndPlay("Vorne") }
if (richtung == "h") {_level0.MCmax.gotoAndPlay("Hinten") }
if (richtung == "l") {_level0.MCmax.gotoAndPlay("Links") }
if (richtung == "r") {_level0.MCmax.gotoAndPlay("Rechts") }
if (richtung == "m") {_level0.MCmax.gotoAndStop("Mitte") }
}
}

Liebe grüße
Georg
Angehängte Dateien
Dateityp: zip mäxchen 05.zip (27,6 KB, 9x aufgerufen)
Ricewind 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 20:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele