| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: May 2008
Beiträge: 19
| Fahrstuhlsimulation
Hallo, ich bin Actionscript-Anfänger und hab da ein Problem. Ich möchte meine Figur mittels eines Fahrstuhls in andere Etage bewegen. Die Wahl der Etage funktion über die Taste 1,2 und 3. Dies funktioniert reibungslo, drückt man eine der Tasten fährt der Fahrstuhl mit meiner Figur in die jeweilige Etage. Mein problem liegt nun darin, dass, wenn ich aus der 1.Etage oder 3. Etage in die 2. Etage fahr, meine Figur nicht mehr "aussteigen" kann. Ich hab schon vieles versucht, komm leider nicht darauf. Wenn mir da jemand helfen könnte, wär das cool. Ich habe im Anhang die .fla-Datei hinzugefügt. vielen Dank im vorraus MfG Sepp(l) Hier ist das script dazu (Skript befindet sich auf dem MC der Figur): on (release, keyPress "1") {aktion_runter=1; aktion_hoch=0; aktion_mitte=0;} on (release, keyPress "2") {aktion_mitte=1; aktion_runter=0; aktion_hoch=0;} on (release, keyPress "3") {aktion_hoch=1; aktion_runter=0; aktion_mitte=0;} onClipEvent(enterFrame) { //Script für Bewegung der Figur if(Key.isDown(Key.DOWN)) {this._visible=0;} else{this._visible=1;} if(Key.isDown(Key.RIGHT)&&this._x<=500 ) {this.play(); this._xscale=100; this._x=this._x+15;} if(this._x>=400 && Key.isDown(Key.RIGHT)) {this.play();} if(Key.isDown(Key.LEFT)&&this._x>=50 ) {this.play(); this._xscale=-100; this._x=this._x-15;} if(this._x<=50 && Key.isDown(Key.LEFT) ) {this.play();} if(Key.isDown(Key.UP)&& this._y>=300 && this._visible==1 &&beschraenkung==0 && _root.keller._y>=500) { this._y=this._y-200;} else if(this._y<=300) {this.stop(); this._y=this._y+25;} //Fahrstuhlsimulation if(this.hitTest(_root.sinken)) { if(this._x<=_root.sinken_rechts._x-20 && this._x>=_root.sinken_links._x+20&&aktion_runter== 1) { _root.keller._y=_root.keller._y-5; _root.etage._y=_root.etage._y-5; _root.etage1._y=_root.etage1._y-5; _root.etage2._y=_root.etage2._y-5; _root.etage3._y=_root.etage3._y-5; _root.schrift1._y=_root.schrift1._y-5; _root.schrift2._y=_root.schrift2._y-5; _root.schrift3._y=_root.schrift3._y-5; this._x=_root.sinken._x; this.stop(); beschraenkung=1; } if(_root.sinken._y>_root.etage1._y) {aktion_runter=0;} if(this._x<=_root.sinken_rechts._x-20 && this._x>=_root.sinken_links._x+20&&aktion_hoch==1) { _root.keller._y=_root.keller._y+5; _root.etage._y=_root.etage._y+5; _root.etage1._y=_root.etage1._y+5; _root.etage2._y=_root.etage2._y+5; _root.etage3._y=_root.etage3._y+5; _root.schrift1._y=_root.schrift1._y+5; _root.schrift2._y=_root.schrift2._y+5; _root.schrift3._y=_root.schrift3._y+5; this._x=_root.sinken._x; this.stop(); beschraenkung=1; } if(_root.sinken._y<=_root.etage3._y) {aktion_hoch=0;} if(this._x<=_root.sinken_rechts._x-20 && this._x>=_root.sinken_links._x+20&&aktion_mitte==1 ) { if(_root.sinken._y>_root.etage2._y) {_root.keller._y=_root.keller._y+5; _root.etage._y=_root.etage._y+5; _root.etage1._y=_root.etage1._y+5; _root.etage2._y=_root.etage2._y+5; _root.etage3._y=_root.etage3._y+5; _root.schrift1._y=_root.schrift1._y+5; _root.schrift2._y=_root.schrift2._y+5; _root.schrift3._y=_root.schrift3._y+5; this._x=_root.sinken._x; this.stop(); beschraenkung=1;} if(_root.sinken._y<_root.etage2._y) {_root.keller._y=_root.keller._y-5; _root.etage._y=_root.etage._y-5; _root.etage1._y=_root.etage1._y-5; _root.etage2._y=_root.etage2._y-5; _root.etage3._y=_root.etage3._y-5; _root.schrift1._y=_root.schrift1._y-5; _root.schrift2._y=_root.schrift2._y-5; _root.schrift3._y=_root.schrift3._y-5; this._x=_root.sinken._x; this.stop(); beschraenkung=1;} } if(_root.sinken._y==_root.etage2._y-1) {aktion_mitte=0; beschraenkung=0;} } else {beschraenkung=0; aktion_runter=0; aktion_hoch=0; aktion_mitte=0;} } |
| | |
| | #3 (permalink) |
| ich versuchs ja Registriert seit: Sep 2007 Ort: Kassel
Beiträge: 281
| Naja... Angeschaut hab ichs mir schon... Der Effekt tritt bei mir auch auf und zwar nur bei Ebene 2. Du blockst doch während der Fahrt die Bewegung deines Männekens. Und gibts die hinterher wieder frei. Anscheinend haste das bei Ebene 2 vergessen. Löscht du evtl ein onEnterFrame und setzt es nicht neu?! PS: Es gibt auch eine Funktion hier um Code schöner zu gestalten. Dann kann man das besser lesen und es wird sich noch so manacher finden, der sich die Mühe macht sich da durchzuarbeiten... (evtl.) ;-) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: May 2008
Beiträge: 19
|
mh das mit der sperre hat ich schon probiert, und ich hab die sperre ja auch eigentlich wieder aufgehoben, deshalb wundert es mich ja, weil eigentlich müßt es gehen. Das mit dem onEnterFrame werde ich mal probieren, mal schauen. sry wegen der hässlichen formatierung des codes, ich bin hier brandneu und muss da erst reinfinden, wie die ansprüche der helfer sind ![]() danke aber für deine antwort. wenn ich selbst ne lösung noch find, schreib ich sie hier rein, wer weiß wem es wie nutzen kann. MfG |
| | |
| | #5 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.322
|
nicht persönlich nehmen ;-) man muss nicht alles kosten, was einsteiger kochen. vermutlich hatte niemand lust, sich durch dieses etagenwirrwarr durch du hangeln? fang mal ganz neu an, sowas ist immer gut. z.b. du bewegst alle objekte einzeln. das ist schon mal unfug und wird dich noch in aller grösste beträngnis bringen. angenommen, in den etagen sollen sich 10 gegenstände befinden, die müsstest du dann ja auch alle einzeln bewegen ... erzeuge ein haus (in diesem movieclip sind dann alle etagen drin) und je etage ein eigenes movieclip für alles, was in der etage drin sein soll (vorraussichtlich kannst du das etagen-mc mehrfach verwenden). und auch die figur befindet sich im haus haus -- figur -- aufzug -- etage0 ---- text in etage0 usw. -- etage1 ---- text in etage1 usw. ... so bei einem etagenwechsel: - aufzug geht nach oben - figur geht nach oben - haus geht nach unten (und damit auch die figur und der aufzug - die dadurch relativ gesehen stehen bleiben. weil eigentlich wird nicht das haus bewegt sondern die "kamera", also die ansicht auf das ganze.) nächster punkt: spaghetticode heissen scripte, die so ewig lang und unübersichtlich wie spaghetti sind. erstelle für jede aufgabe eine funktion und benenne die so, das jeder verstehen kann was da passiert. und nicht mischen was nicht zusammen gehört z.b. figur_laufen(rechts); fahrstuhl_bewegen_etage(2); haus_ansicht_etage(2); usw. kleine einheiten kann man besser auf fehler untersuchen als das komplette ganze. und wenn möglich, berücksichtige das alles universel gehen sollte (klassen). auch wenn du es hier nicht vor hast. so sollten z.b. deine fahrstuhl-funktionen auch mit mehreren fahrstühlen funktionieren; ohne das man die umprogrammieren muss. sinngemäss alle anderen funktionen. dazu gehört z.b. auch, das der fahrstuhl automatisch alles mitnimmt, was 'in ihm steht'. also wenn z.b. später mal deine figur etwas trägt, das muss das automatisch mit nach oben/unten genommen werden. muss jetzt noch nicht sein - nur so als denkanstoss. nächster punkt: _root.keller._y-5; vektorisieren. alles in variable schreiben, das erhöht das verständnis und erleichtert änderungen: fahrstuhl_speed=5; ... _root.keller._y - fahrstuhl_speed; etwas logisch korrekt aufbauen ist sinnvoller als in einem haufen nach irgend etwas zu suchen ;-)
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (13-05-2008 um 16:21 Uhr) |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: May 2008
Beiträge: 19
|
konnt es selber lösen, danke an alle die es probiert haben. Lag daran, dass die Aufhebung der Beschränkung an der falschen Stelle stand. Wen der jetzt funktionierende Code-Kauderwelsch noch interessiert, kann mir gern schreiben. ![]() MfG |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |