Flashhilfe.de - Flash Community

Alle EventListener entfernen [Flash 11]

 


AntwortenRegistrieren Seite1  

FlashNewie#1
Benutzerbild von FlashNewie
Beiträge: 10
Registriert: Dec 2011

10.02.2012, 11:19

Hallo zusammen,

ich habe folgendes Problem:

Ich habe eine Navigation, mit der ich 4 andere SWFs auf die Bühne der Navigation.swf laden kann.

Bei Mausklick auf einen der entsprechenden NaviButtons wird die alte SWF von der Bühne entfernt und die neue reingeladen. Und genau das ist das Problem. Ich entferne die alte swf mit removeChild(loader) und gebe zusätzlich loader.unloadAndStop() an, damit alle EventListener des alten swfs entfernt werden. Bei 3 der Dateien funktioniert das auch so, nur bei der 4. nicht. Die vierte Datei ist ein Spiel und wenn ich gerade mitten im Spiel bin (dort werden über EnterFrame Events Elemente auf die Bühne gebracht), laufen diese immer im Hintergrund weiter und werden nicht gestoppt, was dann irgendwann das Skript zum Absturz bringt.

Kann mir da irgendjemand einen Tipp geben?

Danke schonmal für eure Hilfe.
Werbung
Beiträge: 0
Registriert: Feb 2016


vindel#2
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

10.02.2012, 14:34

Also ich vermute mal deine Listener im Spiel sind auf "stage" gesetzt und somit global gültig.  Du müsstest alle Listener im Spiel auf dein MC vom Spiel setzen oder aber alle Listener manuell entfernen - also mit einer if-Abfrage schaun ob er da ist und dann entfernen.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
FlashNewie#3
Benutzerbild von FlashNewie
Beiträge: 10
Registriert: Dec 2011

Themenautor/in

10.02.2012, 18:30

Hm danke für den Tipp,aber das ist es nicht:(

Ich bekomme immer folgende Fehlermeldung,wenn ich bei "laufendem" Spiel eine neue swf reinladen will:

   at datei_fla::MainTimeline/moveBombe()
TypeError: Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht möglich.

So ist die Funktion aufgebaut, die mit der Bombe zu tun hat:

PHP:
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
var bombeTimer:Timer = new Timer(2000,int.MAX_VALUE);
bombeTimer.addEventListener(TimerEvent.TIMER,createBombe);
bombeTimer.start();
function createBombe(e:TimerEvent):void
{
    var myBombe:Bombe = new Bombe();
    myBombe.x = randomExt(0 + myBombe.width,stage.stageWidth - myBombe.width);
    myBombe.y = 0 - myBombe.height;
    addChild(myBombe);
    myBombe.addEventListener(Event.ENTER_FRAME,moveBombe);
}
function moveBombe(e:Event):void
{
    if (e.currentTarget.y < stage.stageHeight)
    {
        e.currentTarget.y +=  10;
    }
    else
    {
        e.currentTarget.removeEventListener(Event.ENTER_FRAME,moveBombe);
        removeChild(DisplayObject(e.currentTarget));
    }
    // Kollisionserkennung mit Hai
    try
    {
        if (e.currentTarget.hitTestObject(Hai))
        {
            e.currentTarget.removeEventListener(Event.ENTER_FRAME,moveBombe);
            removeChild(DisplayObject(e.currentTarget));
            myExplosion.play(0,1);
            setEnergie(energie-0.3);
            if (energie <= 0)
            {
                endGame();
            }
        }
    }
    catch (e:Error)
    {
        // Energie existiert nicht mehr

    }
}


Ich hab schon versucht in die Navigation folgenden Code einzubauen :
PHP:
1
2
if (this.bombeTimer != null) { this.bombeTimer.stop(); }


Aber das bringt leider auch nicht den gewünschten Erfolg :(((

Ich bin ratlos...

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de