ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
2231
2231
EMPFEHLEN
-
Hi,
ich hab mich in den letzten Tagen mit Flash und AS3 beschäftigt und jetzt steh ich vor folgendem Problem:
Ich platziere zufällig auf meiner Bühne verschiedene Childs, die per Kolision mit meiner Hauptfigur von der Bühne wieder verschwinden. Soweit funktioniert das auch. Aber ich möchte außerdem, dass nach Ablauf eines Timers ein endsprechendes Outtro-Bild gezeigt wird. Problem hier: die vorher zufällig platzierten Objekte sind noch immer sichtbar. Per removeEventListener konnte ich zumindest verhindern, dass neue Objekte erzeugt werden. Jedoch weiß ich nicht, wie ich die bereits vorhandenen von der Bühne lösche. (Genauso verhält es sich mit meiner Figur, die ich nicht von der Bühne löschen kann und somit Fehlermeldungen bekomme.
Hier der Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
import flash.utils.Timer; import flash.events.TimerEvent; // ::::::: Variablen :: var beweX:int = 0; var beweY:int = 0; var t_rot:Timer = new Timer (3000, 50); var t_gruen:Timer = new Timer (8000, 50); var myTimer:Timer = new Timer(1000, countZeit); var points:int = 0; var countZeit: int = 60; var zeit:int = 180; //********************* // ::::::::: EVENTS :: addEventListener(Event.ENTER_FRAME, bewegen); stage.addEventListener(KeyboardEvent.KEY_DOWN, funktionsaufruf); stage.addEventListener(KeyboardEvent.KEY_UP, stoppen); myTimer.addEventListener(TimerEvent.TIMER, runOnce); myTimer.start(); t_rot.addEventListener(TimerEvent.TIMER, anzeige_rot); t_rot.start(); t_gruen.addEventListener(TimerEvent.TIMER, anzeige_gruen); t_gruen.start(); //********************* // Funktion zur Steuerung der Figur function funktionsaufruf(evt:KeyboardEvent) { if (evt.keyCode==Keyboard.RIGHT) { beweX=5; if (stehend_mc.currentFrame!= 2) { stehend_mc.gotoAndStop(2); } } if (evt.keyCode==Keyboard.LEFT) { beweX=-5; if (stehend_mc.currentFrame!= 3) { stehend_mc.gotoAndStop(3); } } if (evt.keyCode==Keyboard.DOWN) { beweY=5; if (stehend_mc.currentFrame!= 4) { stehend_mc.gotoAndStop(4); } } if (evt.keyCode==Keyboard.UP) { beweY=-5; if (stehend_mc.currentFrame!= 5) { stehend_mc.gotoAndStop(5); } } } // ********************* // Funktion zur Erhöhung der Punktzahl function zaehler(zahl:int) { points = points + zahl; trace(points); } //********************* // Funktion zur Bewegung der Figur in verschiedene Richtungen function bewegen(evt:Event) { stehend_mc.x+=beweX; stehend_mc.y+=beweY; } //********************* // Funktion zum Anhalten der Figur function stoppen(e:KeyboardEvent) { beweX = 0; beweY = 0; stehend_mc.gotoAndStop(1); } //********************* // Funktion zum Erzeugen der Objekte auf der Bühne function anzeige_rot(evt:TimerEvent) { var meineIns_rot:kreis = new kreis(); meineIns_rot.x = Math.random()*550; meineIns_rot.y = Math.random()*400; addChild(meineIns_rot); } function anzeige_gruen(evt:TimerEvent) { var meineIns_gruen:kreis_gruen = new kreis_gruen(); meineIns_gruen.x = Math.random()*550; meineIns_gruen.y = Math.random()*400; addChild(meineIns_gruen); } //********************* // Funktion zur Abfrage ob die Zeit abgelaufen ist // und dann soll der Sprung zum Endbild kommen function runOnce(event:TimerEvent):void { countZeit = countZeit - 1; zeit = (zeit - 3); leben_mc.gotoAndStop(zeit); trace("runOnce() called @ " + getTimer() + " ms"); if (countZeit <= 0) { myTimer.removeEventListener(TimerEvent.TIMER, runOnce); removeEventListener(Event.ENTER_FRAME, bewegen); stage.removeEventListener(KeyboardEvent.KEY_DOWN, funktionsaufruf); stage.removeEventListener(KeyboardEvent.KEY_UP, stoppen); t_rot.removeEventListener(TimerEvent.TIMER, anzeige_rot); t_gruen.removeEventListener(TimerEvent.TIMER, anzeige_gruen); if (points >= 0) { gotoAndStop(4); } else { gotoAndStop(5); } } } // *********************
Danke für eure HilfeGeändert von Daimos00 (23.12.08 um 13:21 Uhr)
-
Hallo,
poste bitte das nächste mal nicht den ganzen ellenlangen Code, sondern nur die problemrelevanten Teile.
Ich kenn mich zwar überhaupt nicht mit AS3 aus, aber removeEventListener löscht doch bestimmt nur den Link zwischen Eingabemöglichkeit und dann auszuführender Funktion, oder? Dann müsste es zu addChild auch einen Counterpart geben ... removeChild?
Google nach removeChild findet das auch so. Probiers mal aus.
http://www.tutorialized.com/view/tut...script-3/28645
Gruß und frohe Weihnachten
jens
-
Hi,
erst mal sorry für den ganzen Quelltext, ich hab gedacht man kann sich das Problem besser herleiten wenn man alles kennt...
Naja, auf die Idee mit removeChild() bin ich auch schon gekommen, Problem ist, dass ich ja mehrere "Kinder" eines Objektes anlege und der Befehl removeChild löscht bei mir zwar das letzte erzeugte "Kind", aber nicht alle der bisher erzeugten.
Danke für eure Hilfe
-
Hallo,
in diesem Fall empfiehlt sich die Verwendung einer Kind-Liste, z.B. eines Arrays, in der du sämtliche instanzierte Kinder speicherst und bei Bedarf mittels einer Schlaufe wieder entfernen kannst:
Code :1 2 3 4 5 6 7 8 9
var liste: Array = []; var meinKind: Sprite = new Sprite(); liste.push(meinKind); addChild(meinKind); for (var i: int = 0; i < liste.length; i++) { removeChild(liste[i] as Sprite); }
Gruss
Ähnliche Themen
-
Objekte auf Bühne durch dunkleren Hintergrund hervorheben
Von T-TRAXX im Forum Flash PlattformAntworten: 4Letzter Beitrag: 04.01.09, 01:21 -
Objekte löschen, deren zeiger in Vector gespeichert sind
Von armin1893 im Forum C/C++Antworten: 3Letzter Beitrag: 11.11.08, 16:05 -
Objekte löschen
Von Mailyn im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 11.09.05, 10:36 -
Alle Elemente von Ebene 0-100 von Bühne löschen?
Von Orphelina im Forum Flash PlattformAntworten: 1Letzter Beitrag: 10.08.05, 14:39 -
Objekte ab einem bestimmten Frame der Zeitleiste löschen?
Von killkrog im Forum 3D Studio MaxAntworten: 4Letzter Beitrag: 01.05.03, 16:52





Zitieren

Login





